-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
setuptools version
setuptools==61.0.0
Python version
Python 3.8
OS
Ubuntu
Additional environment information
No response
Description
When using pyproject.toml for configuration alongside setup.cfg, setuptools will use the value for classifiers from setup.cfg if it is not given in pyprojet.toml even ifclassifiers is not listed in dynamic. This is not allowed under PEP 621[1]
If the metadata does not list a field in dynamic, then a build back-end CANNOT fill in the requisite metadata on behalf of the user (i.e. dynamic is the only way to allow a tool to fill in metadata and the user must opt into the filling in).
[1] https://peps.python.org/pep-0621/#dynamic
Expected behavior
setuptools should only take the value from setup.cfg is classifiers is listed in dynamic.
There is a separate issue where if classifiers is in dynamic, setuptools throws an error:
File "/tmp/build-env-lbp441r9/lib/python3.8/site-packages/setuptools/dist.py", line 836, in parse_config_files
pyprojecttoml.apply_configuration(self, filename, ignore_option_errors)
File "/tmp/build-env-lbp441r9/lib/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 52, in apply_configuration
config = read_configuration(filepath, True, ignore_option_errors, dist)
File "/tmp/build-env-lbp441r9/lib/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 118, in read_configuration
return expand_configuration(asdict, root_dir, ignore_option_errors, dist)
File "/tmp/build-env-lbp441r9/lib/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 163, in expand_configuration
_expand_all_dynamic(project_cfg, setuptools_cfg, package_dir, root_dir, ignore)
File "/tmp/build-env-lbp441r9/lib/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 252, in _expand_all_dynamic
project_cfg["classifiers"] = value.splitlines()
AttributeError: 'NoneType' object has no attribute 'splitlines'
How to Reproduce
- Clone the following gist: https://gist.github.com/domdfcoding/88f2b9d8e7cfd3c39a3404c3be6e4c87
- Build the project with
python3 -m pip wheel . - Inspect the METADATA file in the wheel, and observe the presence of the
Development Status :: 5 - Production/Stableclassifier.
Output
N/A