Skip to content

Commit 824217e

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 4e1f058 commit 824217e

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

Diff for: mesonpy/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,9 @@ def _compute_build_time_dependencies(
771771
version = packaging.version.parse(importlib_metadata.version(name))
772772
except importlib_metadata.PackageNotFoundError as exc:
773773
raise ConfigError(f'package "{name}" specified in "build-time-pins" not found: {template!r}') from exc
774+
if version.is_devrelease or version.is_prerelease:
775+
print('meson-python: build-time pin for pre-release version "{version}" of "{name}" not generared: {template!r}')
776+
continue
774777
pin = packaging.requirements.Requirement(template.format(v=version))
775778
if pin.marker:
776779
raise ConfigError(f'requirements in "build-time-pins" cannot contain markers: {template!r}')

Diff for: tests/test_wheel.py

+26
Original file line numberDiff line numberDiff line change
@@ -311,3 +311,29 @@ def test_build_time_pins(wheel_dynamic_dependencies):
311311
Requires-Dist: meson-python>=0.13.0
312312
Requires-Dist: packaging~={packaging_version.major}.{packaging_version.minor}
313313
''')
314+
315+
316+
def test_compute_build_time_dependencies(monkeypatch):
317+
versions = {
318+
'aaa': '1.2.3',
319+
'bbb': '4.5.6',
320+
'ddd': '1.0.0rc1', # pre-release will not be added to build-time dependencies
321+
}
322+
monkeypatch.setattr(importlib_metadata, 'version', lambda package: versions.get(package))
323+
deps = [
324+
'bbb>=0.1',
325+
'ccc>=0.2',
326+
'ddd>=0.3',
327+
]
328+
pins = [
329+
'aaa>={v}',
330+
'bbb~={v.major}.{v.minor}',
331+
'ddd=={v}',
332+
]
333+
r = mesonpy._compute_build_time_dependencies([packaging.requirements.Requirement(x) for x in deps], pins)
334+
assert sorted(str(x) for x in r) == [
335+
'aaa>=1.2.3',
336+
'bbb>=0.1,~=4.5',
337+
'ccc>=0.2',
338+
'ddd>=0.3',
339+
]

0 commit comments

Comments
 (0)