Skip to content

Commit 57d4e49

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 bd9bfd0 commit 57d4e49

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
@@ -664,6 +664,9 @@ def _compute_build_time_dependencies(
664664
version = packaging.version.parse(importlib_metadata.version(name))
665665
except importlib_metadata.PackageNotFoundError as exc:
666666
raise ConfigError(f'package "{name}" specified in "build-time-pins" not found: {template!r}') from exc
667+
if version.is_devrelease or version.is_prerelease:
668+
print('meson-python: build-time pin for pre-release version "{version}" of "{name}" not generared: {template!r}')
669+
continue
667670
pin = packaging.requirements.Requirement(template.format(v=version))
668671
if pin.marker:
669672
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
@@ -263,3 +263,29 @@ def test_build_time_pins(wheel_dynamic_dependencies):
263263
Requires-Dist: meson-python>=0.13.0
264264
Requires-Dist: packaging~={packaging_version.major}.{packaging_version.minor}
265265
''')
266+
267+
268+
def test_compute_build_time_dependencies(monkeypatch):
269+
versions = {
270+
'aaa': '1.2.3',
271+
'bbb': '4.5.6',
272+
'ddd': '1.0.0rc1', # pre-release will not be added to build-time dependencies
273+
}
274+
monkeypatch.setattr(importlib_metadata, 'version', lambda package: versions.get(package))
275+
deps = [
276+
'bbb>=0.1',
277+
'ccc>=0.2',
278+
'ddd>=0.3',
279+
]
280+
pins = [
281+
'aaa>={v}',
282+
'bbb~={v.major}.{v.minor}',
283+
'ddd=={v}',
284+
]
285+
r = mesonpy._compute_build_time_dependencies([packaging.requirements.Requirement(x) for x in deps], pins)
286+
assert sorted(str(x) for x in r) == [
287+
'aaa>=1.2.3',
288+
'bbb>=0.1,~=4.5',
289+
'ccc>=0.2',
290+
'ddd>=0.3',
291+
]

0 commit comments

Comments
 (0)