Skip to content

Commit 415266a

Browse files
committed
Set upper limit for project Python version
The version of Python used by the project infrastructure is controlled via the pyproject.yaml metadata file. Previously the file specified that any version >=3.9.0 and <4.0.0 could be used, since it had been validated with 3.9 and theoretically no breaking changes should be introduced without a major version bump. However, there was a breaking change in Python version 3.10, which caused an incompatibility with the version of the project's pyyaml Python package dependency. This caused the `poetry install` command to fail when a version of Python greater than 3.9.x was used: ``` Installing dependencies from lock file Package operations: 4 installs, 0 updates, 0 removals - Installing pathspec (0.9.0) - Installing pyyaml (5.4.1) PEP517 build of a dependency failed Backend subprocess exited when trying to invoke get_requires_for_build_wheel | Command '['/tmp/tmp4jjabujb/.venv/bin/python', '/opt/hostedtoolcache/Python/3.13.2/x64/lib/python3.13/site-packages/pyproject_hooks/_in_process/_in_process.py', 'get_requires_for_build_wheel', '/tmp/tmprk6qet9s']' returned non-zero exit status 1. | | running egg_info | writing lib3/PyYAML.egg-info/PKG-INFO | writing dependency_links to lib3/PyYAML.egg-info/dependency_links.txt | writing top-level names to lib3/PyYAML.egg-info/top_level.txt | Traceback (most recent call last): | File "/opt/hostedtoolcache/Python/3.13.2/x64/lib/python3.13/site-packages/pyproject_hooks/_in_process/_in_process.py", line 389, in <module> | main() | ~~~~^^ | File "/opt/hostedtoolcache/Python/3.13.2/x64/lib/python3.13/site-packages/pyproject_hooks/_in_process/_in_process.py", line 373, in main | json_out["return_val"] = hook(**hook_input["kwargs"]) | ~~~~^^^^^^^^^^^^^^^^^^^^^^^^ | File "/opt/hostedtoolcache/Python/3.13.2/x64/lib/python3.13/site-packages/pyproject_hooks/_in_process/_in_process.py", line 143, in get_requires_for_build_wheel | return hook(config_settings) | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/build_meta.py", line 334, in get_requires_for_build_wheel | return self._get_build_requires(config_settings, requirements=[]) | ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/build_meta.py", line 304, in _get_build_requires | self.run_setup() | ~~~~~~~~~~~~~~^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/build_meta.py", line 320, in run_setup | exec(code, locals()) | ~~~~^^^^^^^^^^^^^^^^ | File "<string>", line 271, in <module> | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/__init__.py", line 117, in setup | return distutils.core.setup(**attrs) | ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/_distutils/core.py", line 186, in setup | return run_commands(dist) | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/_distutils/core.py", line 202, in run_commands | dist.run_commands() | ~~~~~~~~~~~~~~~~~^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/_distutils/dist.py", line 1002, in run_commands | self.run_command(cmd) | ~~~~~~~~~~~~~~~~^^^^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/dist.py", line 999, in run_command | super().run_command(command) | ~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/_distutils/dist.py", line 1021, in run_command | cmd_obj.run() | ~~~~~~~~~~~^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/command/egg_info.py", line 312, in run | self.find_sources() | ~~~~~~~~~~~~~~~~~^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/command/egg_info.py", line 320, in find_sources | mm.run() | ~~~~~~^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/command/egg_info.py", line 543, in run | self.add_defaults() | ~~~~~~~~~~~~~~~~~^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/command/egg_info.py", line 581, in add_defaults | sdist.add_defaults(self) | ~~~~~~~~~~~~~~~~~~^^^^^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/command/sdist.py", line 109, in add_defaults | super().add_defaults() | ~~~~~~~~~~~~~~~~~~~~^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/_distutils/command/sdist.py", line 245, in add_defaults | self._add_defaults_ext() | ~~~~~~~~~~~~~~~~~~~~~~^^ | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/_distutils/command/sdist.py", line 330, in _add_defaults_ext | self.filelist.extend(build_ext.get_source_files()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~^^ | File "<string>", line 201, in get_source_files | File "/tmp/tmp4jjabujb/.venv/lib/python3.13/site-packages/setuptools/_distutils/cmd.py", line 131, in __getattr__ | raise AttributeError(attr) | AttributeError: cython_sources Note: This error originates from the build backend, and is likely not a problem with poetry but one of the following issues with pyyaml (5.4.1) - not supporting PEP 517 builds - not specifying PEP 517 build requirements correctly - the build requirements are incompatible with your operating system or Python version - the build requirements are missing system dependencies (eg: compilers, libraries, headers). You can verify this by running pip wheel --no-cache-dir --use-pep517 "pyyaml (==5.4.1)". exit status 1 ``` Although the incompatibility has already been fixed in pyyaml, this is a transitive dependency and so it might be difficult to update the version used by the project. So the chosen solution is to adjust the Python version constraints to require a version less than 3.10.0 be used. This will still allow use of any Python version in the 3.9.x series to make the infrastructure more friendly to local use by contributors, while ensuring that a compatible version is used.
1 parent 8d15ab1 commit 415266a

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

poetry.lock

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description = ""
55
authors = []
66

77
[tool.poetry.dependencies]
8-
python = "^3.9"
8+
python = "~3.9"
99

1010
[tool.poetry.dev-dependencies]
1111
yamllint = "^1.36.0"

0 commit comments

Comments
 (0)