Skip to content

[FR] Add support for PEP 794Β #5112

@jenshnielsen

Description

@jenshnielsen

What's the problem this feature will solve?

PEP 794 has been accepted but setuptools fails to build packages that contains the fields.

      Traceback (most recent call last):
        File "<string>", line 14, in <module>
          requires = get_requires_for_build({})
        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\setuptools\build_meta.py", line 473, in get_requires_for_build_editable
          return self.get_requires_for_build_wheel(config_settings)
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\setuptools\build_meta.py", line 331, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=[])
                 ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\setuptools\build_meta.py", line 301, in _get_build_requires
          self.run_setup()
          ~~~~~~~~~~~~~~^^
        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\setuptools\build_meta.py", line 317, in run_setup
          exec(code, locals())
          ~~~~^^^^^^^^^^^^^^^^
        File "<string>", line 1, in <module>
          import sys

        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\setuptools\__init__.py", line 115, in setup
          return distutils.core.setup(**attrs)
                 ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\setuptools\_distutils\core.py", line 160, in setup
          dist.parse_config_files()
          ~~~~~~~~~~~~~~~~~~~~~~~^^
        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\_virtualenv.py", line 20, in parse_config_files
          result = old_parse_config_files(self, *args, **kwargs)
        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\setuptools\dist.py", line 756, in parse_config_files
          pyprojecttoml.apply_configuration(self, filename, ignore_option_errors)
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\setuptools\config\pyprojecttoml.py", line 72, in apply_configuration
          config = read_configuration(filepath, True, ignore_option_errors, dist)
        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\setuptools\config\pyprojecttoml.py", line 140, in read_configuration
          validate(subset, filepath)
          ~~~~~~~~^^^^^^^^^^^^^^^^^^
        File "D:\packages\uv\builds-v0\.tmptb3vmB\Lib\site-packages\setuptools\config\pyprojecttoml.py", line 61, in validate
          raise ValueError(f"{error}\n{summary}") from None
      ValueError: invalid pyproject.toml config: `project`.
      configuration error: `project` must not contain {'import-names'} properties

      hint: This usually indicates a problem with the package or the build environment.

In the first instance this is because validate-pyproject does not yet support pep 794 see abravalheri/validate-pyproject#278

Describe the solution you'd like

Setuptools should support building correct packages with pep 794 metadata.

Alternative Solutions

  • Switch to a different build backend
  • Don't use this new feature

Additional context

No response

Code of Conduct

  • I agree to follow the PSF Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions