Skip to content

Commit ef3d287

Browse files
committed
ENH: do not generate build-time pins for pre-releases
It is not possible to define a universally useful semantic for build-time pins involving pre-releases. Do not generate them.
1 parent 018cb4e commit ef3d287

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

mesonpy/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,9 @@ def _compute_build_time_dependencies(
667667
version = packaging.version.parse(importlib_metadata.version(name))
668668
except importlib_metadata.PackageNotFoundError as exc:
669669
raise ConfigError(f'package "{name}" specified in "build-time-pins" not found: {template!r}') from exc
670+
if version.is_devrelease or version.is_prerelease:
671+
print('meson-python: build-time pin for pre-release version "{version}" of "{name}" not generared: {template!r}')
672+
continue
670673
pin = packaging.requirements.Requirement(template.format(v=version))
671674
if pin.marker:
672675
raise ConfigError(f'requirements in "build-time-pins" cannot contain markers: {template!r}')

tests/test_wheel.py

+26
Original file line numberDiff line numberDiff line change
@@ -264,3 +264,29 @@ def test_build_time_pins(wheel_dynamic_dependencies):
264264
Requires-Dist: meson-python>=0.13.0
265265
Requires-Dist: packaging~={packaging_version.major}.{packaging_version.minor}
266266
''')
267+
268+
269+
def test_compute_build_time_dependencies(monkeypatch):
270+
versions = {
271+
'aaa': '1.2.3',
272+
'bbb': '4.5.6',
273+
'ddd': '1.0.0rc1', # pre-release will not be added to build-time dependencies
274+
}
275+
monkeypatch.setattr(importlib_metadata, 'version', lambda package: versions.get(package))
276+
deps = [
277+
'bbb>=0.1',
278+
'ccc>=0.2',
279+
'ddd>=0.3',
280+
]
281+
pins = [
282+
'aaa>={v}',
283+
'bbb~={v.major}.{v.minor}',
284+
'ddd=={v}',
285+
]
286+
r = mesonpy._compute_build_time_dependencies([packaging.requirements.Requirement(x) for x in deps], pins)
287+
assert sorted(str(x) for x in r) == [
288+
'aaa>=1.2.3',
289+
'bbb>=0.1,~=4.5',
290+
'ccc>=0.2',
291+
'ddd>=0.3',
292+
]

0 commit comments

Comments
 (0)