setuptools: Projects that contain `pyproject.toml` not compliant with standards are failing on v61.

Hi, We have been using pyproject.toml file in setup.py and when we build using setup.py sdist bdist_wheel it was always working. Suddenly it started complaining today-

/pyprojecttoml.py💯 _ExperimentalProjectMetadata: Support for project metadata in pyproject.toml is still experimental and may be removed (or change) in future releases. [05:42:53] [Step 3/5] warnings.warn(msg, _ExperimentalProjectMetadata) [05:42:53] [Step 3/5] ERROR:setuptools.config.pyprojecttoml:configuration error: project must not contain {‘python_requires’} properties ValueError: invalid pyproject.toml config: project

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 10
  • Comments: 15 (7 by maintainers)

Commits related to this issue

Most upvoted comments

Hi, there same issue arises in asyncpg module. Although requires-python key is specified in the pyproject.toml file. ValueError: invalid pyproject.toml config: project

I had the same issue with asyncpg as a dependency. As a temporary fix I had to fork asyncpg’s repo and change the build-system dependency of setuptools to be <=60.10.0 as shown here: https://github.com/tapicer/asyncpg/commit/9ee0e4a04e8690d0a7fd534153b3f733de92c672, and pointed the asyncpg dependency to my repo with asyncpg = {git = "https://github.com/tapicer/asyncpg.git"} in my pyproject.toml.

Expecting setuptools’ issue to be fixed to I can switch back to the original asyncpg lib.

Hi, there same issue arises in asyncpg module. Although requires-python key is specified in the pyproject.toml file. ValueError: invalid pyproject.toml config: project

In the pikepdf project, requires-python is used, but it still fails because [project] doesn’t have a name value apparently. This started yesterday.

#14 24.24   Command ['/usr/local/bin/python', '-m', 'pip', 'install', '--no-deps', '/root/.cache/pypoetry/artifacts/c2/67/c4/0d39f7dd6c03949a5895f741144282a275c6cc97ae2bd61846066dfded/pikepdf-4.5.0.tar.gz'] errored with the following return code 1, and output: 
#14 24.24   Processing /root/.cache/pypoetry/artifacts/c2/67/c4/0d39f7dd6c03949a5895f741144282a275c6cc97ae2bd61846066dfded/pikepdf-4.5.0.tar.gz
#14 24.24     Installing build dependencies: started
#14 24.24     Installing build dependencies: finished with status 'done'
#14 24.24     Getting requirements to build wheel: started
#14 24.24     Getting requirements to build wheel: finished with status 'done'
#14 24.24     Preparing metadata (pyproject.toml): started
#14 24.24     Preparing metadata (pyproject.toml): finished with status 'error'
#14 24.24     error: subprocess-exited-with-error
#14 24.24     
#14 24.24     × Preparing metadata (pyproject.toml) did not run successfully.
#14 24.24     │ exit code: 1
#14 24.24     ╰─> [515 lines of output]
#14 24.24         /tmp/pip-build-env-cukg_z95/overlay/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py:100: _ExperimentalProjectMetadata: Support for project metadata in `pyproject.toml` is still experimental and may be removed (or change) in future releases.
#14 24.24           warnings.warn(msg, _ExperimentalProjectMetadata)
#14 24.24         configuration error: `project` must contain ['name'] properties
#14 24.24         DESCRIPTION:
#14 24.24             Data structure for the **project** table inside ``pyproject.toml`` (as
#14 24.24             initially defined in :pep:`621`)
#14 24.24         
#14 24.24         GIVEN VALUE:
#14 24.24             {
#14 24.24                 "requires-python": ">=3.7"
#14 24.24             }
#14 24.24         
#14 24.24         OFFENDING RULE: 'required'
#14 24.24         
#14 24.24         DEFINITION:
#14 24.24             {
#14 24.24                 "$schema": "http://json-schema.org/draft-07/schema",
#14 24.24                 "$id": "https://packaging.python.org/en/latest/specifications/declaring-project-metadata/",
#14 24.24                 "title": "Package metadata stored in the ``project`` table",
#14 24.24                 "type": "object",
#14 24.24                 "properties": {
#14 24.24                     "name": {
#14 24.24                         "type": "string",
#14 24.24                         "description": "The name (primary identifier) of the project. MUST be statically defined.",
#14 24.24                         "format": "pep508-identifier"
#14 24.24                     },
#14 24.24                     "version": {
#14 24.24                         "type": "string",
#14 24.24                         "description": "The version of the project as supported by :pep:`440`.",
#14 24.24                         "format": "pep440"
#14 24.24                     },
#14 24.24                     "description": {
#14 24.24                         "type": "string",
#14 24.24                         "$$description": [
#14 24.24                             "The `summary description of the project",
#14 24.24                             "<https://packaging.python.org/specifications/core-metadata/#summary>`_"
#14 24.24                         ]
#14 24.24                     },
#14 24.24                     "readme": {
#14 24.24                         "$$description": [
#14 24.24                             "`Full/detailed description of the project in the form of a README",
#14 24.24                             "<https://www.python.org/dev/peps/pep-0621/#readme>`_",
#14 24.24                             "with meaning similar to the one defined in `core metadata's Description",
#14 24.24                             "<https://packaging.python.org/specifications/core-metadata/#description>`_"
#14 24.24                         ],
#14 24.24                         "oneOf": [
#14 24.24                             {
#14 24.24                                 "type": "string",
#14 24.24                                 "$$description": [
#14 24.24                                     "Relative path to a text file (UTF-8) containing the full description",
#14 24.24                                     "of the project. If the file path ends in case-insensitive ``.md`` or",
#14 24.24                                     "``.rst`` suffixes, then the content-type is respectively",
#14 24.24                                     "``text/markdown`` or ``text/x-rst``"
#14 24.24                                 ]
#14 24.24                             },
#14 24.24                             {
#14 24.24                                 "type": "object",
#14 24.24                                 "allOf": [
#14 24.24                                     {
#14 24.24                                         "anyOf": [
#14 24.24                                             {
#14 24.24                                                 "properties": {
#14 24.24                                                     "file": {
#14 24.24                                                         "type": "string",
#14 24.24                                                         "$$description": [
#14 24.24                                                             "Relative path to a text file containing the full description",
#14 24.24                                                             "of the project."
#14 24.24                                                         ]
#14 24.24                                                     }
#14 24.24                                                 },
#14 24.24                                                 "required": [
#14 24.24                                                     "file"
#14 24.24                                                 ]
#14 24.24                                             },
#14 24.24                                             {
#14 24.24                                                 "properties": {
#14 24.24                                                     "text": {
#14 24.24                                                         "type": "string",
#14 24.24                                                         "description": "Full text describing the project."
#14 24.24                                                     }
#14 24.24                                                 },
#14 24.24                                                 "required": [
#14 24.24                                                     "text"
#14 24.24                                                 ]
#14 24.24                                             }
#14 24.24                                         ]
#14 24.24                                     },
#14 24.24                                     {
#14 24.24                                         "properties": {
#14 24.24                                             "content-type": {
#14 24.24                                                 "type": "string",
#14 24.24                                                 "$$description": [
#14 24.24                                                     "Content-type (:rfc:`1341`) of the full description",
#14 24.24                                                     "(e.g. ``text/markdown``). The ``charset`` parameter is assumed",
#14 24.24                                                     "UTF-8 when not present."
#14 24.24                                                 ],
#14 24.24                                                 "$comment": "TODO: add regex pattern or format?"
#14 24.24                                             }
#14 24.24                                         },
#14 24.24                                         "required": [
#14 24.24                                             "content-type"
#14 24.24                                         ]
#14 24.24                                     }
#14 24.24                                 ]
#14 24.24                             }
#14 24.24                         ]
#14 24.24                     },
#14 24.24                     "requires-python": {
#14 24.24                         "type": "string",
#14 24.24                         "format": "pep508-versionspec",
#14 24.24                         "$$description": [
#14 24.24                             "`The Python version requirements of the project",
#14 24.24                             "<https://packaging.python.org/specifications/core-metadata/#requires-python>`_."
#14 24.24                         ]
#14 24.24                     },
#14 24.24                     "license": {
#14 24.24                         "description": "`Project license <https://www.python.org/dev/peps/pep-0621/#license>`_.",
#14 24.24                         "oneOf": [
#14 24.24                             {
#14 24.24                                 "properties": {
#14 24.24                                     "file": {
#14 24.24                                         "type": "string",
#14 24.24                                         "$$description": [
#14 24.24                                             "Relative path to the file (UTF-8) which contains the license for the",
#14 24.24                                             "project."
#14 24.24                                         ]
#14 24.24                                     }
#14 24.24                                 },
#14 24.24                                 "required": [
#14 24.24                                     "file"
#14 24.24                                 ]
#14 24.24                             },
#14 24.24                             {
#14 24.24                                 "properties": {
#14 24.24                                     "text": {
#14 24.24                                         "type": "string",
#14 24.24                                         "$$description": [
#14 24.24                                             "The license of the project whose meaning is that of the",
#14 24.24                                             "`License field from the core metadata",
#14 24.24                                             "<https://packaging.python.org/specifications/core-metadata/#license>`_."
#14 24.24                                         ]
#14 24.24                                     }
#14 24.24                                 },
#14 24.24                                 "required": [
#14 24.24                                     "text"
#14 24.24                                 ]
#14 24.24                             }
#14 24.24                         ]
#14 24.24                     },
#14 24.24                     "authors": {
#14 24.24                         "type": "array",
#14 24.24                         "items": {
#14 24.24                             "$id": "#/definitions/author",
#14 24.24                             "title": "Author or Maintainer",
#14 24.24                             "$comment": "https://www.python.org/dev/peps/pep-0621/#authors-maintainers",
#14 24.24                             "type": "object",
#14 24.24                             "properties": {
#14 24.24                                 "name": {
#14 24.24                                     "type": "string",
#14 24.24                                     "$$description": [
#14 24.24                                         "MUST be a valid email name, i.e. whatever can be put as a name, before an",
#14 24.24                                         "email, in :rfc:`822`."
#14 24.24                                     ]
#14 24.24                                 },
#14 24.24                                 "email": {
#14 24.24                                     "type": "string",
#14 24.24                                     "format": "idn-email",
#14 24.24                                     "description": "MUST be a valid email address"
#14 24.24                                 }
#14 24.24                             }
#14 24.24                         },
#14 24.24                         "$$description": [
#14 24.24                             "The people or organizations considered to be the 'authors' of the project.",
#14 24.24                             "The exact meaning is open to interpretation (e.g. original or primary authors,",
#14 24.24                             "current maintainers, or owners of the package)."
#14 24.24                         ]
#14 24.24                     },
#14 24.24                     "maintainers": {
#14 24.24                         "type": "array",
#14 24.24                         "items": {
#14 24.24                             "$id": "#/definitions/author",
#14 24.24                             "title": "Author or Maintainer",
#14 24.24                             "$comment": "https://www.python.org/dev/peps/pep-0621/#authors-maintainers",
#14 24.24                             "type": "object",
#14 24.24                             "properties": {
#14 24.24                                 "name": {
#14 24.24                                     "type": "string",
#14 24.24                                     "$$description": [
#14 24.24                                         "MUST be a valid email name, i.e. whatever can be put as a name, before an",
#14 24.24                                         "email, in :rfc:`822`."
#14 24.24                                     ]
#14 24.24                                 },
#14 24.24                                 "email": {
#14 24.24                                     "type": "string",
#14 24.24                                     "format": "idn-email",
#14 24.24                                     "description": "MUST be a valid email address"
#14 24.24                                 }
#14 24.24                             }
#14 24.24                         },
#14 24.24                         "$$description": [
#14 24.24                             "The people or organizations considered to be the 'maintainers' of the project.",
#14 24.24                             "Similarly to ``authors``, the exact meaning is open to interpretation."
#14 24.24                         ]
#14 24.24                     },
#14 24.24                     "keywords": {
#14 24.24                         "type": "array",
#14 24.24                         "items": {
#14 24.24                             "type": "string"
#14 24.24                         },
#14 24.24                         "description": "List of keywords to assist searching for the distribution in a larger catalog."
#14 24.24                     },
#14 24.24                     "classifiers": {
#14 24.24                         "type": "array",
#14 24.24                         "items": {
#14 24.24                             "type": "string",
#14 24.24                             "format": "trove-classifier",
#14 24.24                             "description": "`PyPI classifier <https://pypi.org/classifiers/>`_."
#14 24.24                         },
#14 24.24                         "$$description": [
#14 24.24                             "`Trove classifiers <https://pypi.org/classifiers/>`_",
#14 24.24                             "which apply to the project."
#14 24.24                         ]
#14 24.24                     },
#14 24.24                     "urls": {
#14 24.24                         "type": "object",
#14 24.24                         "description": "URLs associated with the project in the form ``label => value``.",
#14 24.24                         "additionalProperties": false,
#14 24.24                         "patternProperties": {
#14 24.24                             "^.+$": {
#14 24.24                                 "type": "string",
#14 24.24                                 "format": "url"
#14 24.24                             }
#14 24.24                         }
#14 24.24                     },
#14 24.24                     "scripts": {
#14 24.24                         "$id": "#/definitions/entry-point-group",
#14 24.24                         "title": "Entry-points",
#14 24.24                         "type": "object",
#14 24.24                         "$$description": [
#14 24.24                             "Entry-points are grouped together to indicate what sort of capabilities they",
#14 24.24                             "provide.",
#14 24.24                             "See the `packaging guides",
#14 24.24                             "<https://packaging.python.org/specifications/entry-points/>`_",
#14 24.24                             "and `setuptools docs",
#14 24.24                             "<https://setuptools.pypa.io/en/latest/userguide/entry_point.html>`_",
#14 24.24                             "for more information."
#14 24.24                         ],
#14 24.24                         "propertyNames": {
#14 24.24                             "format": "python-entrypoint-name"
#14 24.24                         },
#14 24.24                         "additionalProperties": false,
#14 24.24                         "patternProperties": {
#14 24.24                             "^.+$": {
#14 24.24                                 "type": "string",
#14 24.24                                 "$$description": [
#14 24.24                                     "Reference to a Python object. It is either in the form",
#14 24.24                                     "``importable.module``, or ``importable.module:object.attr``."
#14 24.24                                 ],
#14 24.24                                 "format": "python-entrypoint-reference",
#14 24.24                                 "$comment": "https://packaging.python.org/specifications/entry-points/"
#14 24.24                             }
#14 24.24                         }
#14 24.24                     },
#14 24.24                     "gui-scripts": {
#14 24.24                         "$id": "#/definitions/entry-point-group",
#14 24.24                         "title": "Entry-points",
#14 24.24                         "type": "object",
#14 24.24                         "$$description": [
#14 24.24                             "Entry-points are grouped together to indicate what sort of capabilities they",
#14 24.24                             "provide.",
#14 24.24                             "See the `packaging guides",
#14 24.24                             "<https://packaging.python.org/specifications/entry-points/>`_",
#14 24.24                             "and `setuptools docs",
#14 24.24                             "<https://setuptools.pypa.io/en/latest/userguide/entry_point.html>`_",
#14 24.24                             "for more information."
#14 24.24                         ],
#14 24.24                         "propertyNames": {
#14 24.24                             "format": "python-entrypoint-name"
#14 24.24                         },
#14 24.24                         "additionalProperties": false,
#14 24.24                         "patternProperties": {
#14 24.24                             "^.+$": {
#14 24.24                                 "type": "string",
#14 24.24                                 "$$description": [
#14 24.24                                     "Reference to a Python object. It is either in the form",
#14 24.24                                     "``importable.module``, or ``importable.module:object.attr``."
#14 24.24                                 ],
#14 24.24                                 "format": "python-entrypoint-reference",
#14 24.24                                 "$comment": "https://packaging.python.org/specifications/entry-points/"
#14 24.24                             }
#14 24.24                         }
#14 24.24                     },
#14 24.24                     "entry-points": {
#14 24.24                         "$$description": [
#14 24.24                             "Instruct the installer to expose the given modules/functions via",
#14 24.24                             "``entry-point`` discovery mechanism (useful for plugins).",
#14 24.24                             "More information available in the `Python packaging guide",
#14 24.24                             "<https://packaging.python.org/specifications/entry-points/>`_."
#14 24.24                         ],
#14 24.24                         "propertyNames": {
#14 24.24                             "format": "python-entrypoint-group"
#14 24.24                         },
#14 24.24                         "additionalProperties": false,
#14 24.24                         "patternProperties": {
#14 24.24                             "^.+$": {
#14 24.24                                 "$id": "#/definitions/entry-point-group",
#14 24.24                                 "title": "Entry-points",
#14 24.24                                 "type": "object",
#14 24.24                                 "$$description": [
#14 24.24                                     "Entry-points are grouped together to indicate what sort of capabilities they",
#14 24.24                                     "provide.",
#14 24.24                                     "See the `packaging guides",
#14 24.24                                     "<https://packaging.python.org/specifications/entry-points/>`_",
#14 24.24                                     "and `setuptools docs",
#14 24.24                                     "<https://setuptools.pypa.io/en/latest/userguide/entry_point.html>`_",
#14 24.24                                     "for more information."
#14 24.24                                 ],
#14 24.24                                 "propertyNames": {
#14 24.24                                     "format": "python-entrypoint-name"
#14 24.24                                 },
#14 24.24                                 "additionalProperties": false,
#14 24.24                                 "patternProperties": {
#14 24.24                                     "^.+$": {
#14 24.24                                         "type": "string",
#14 24.24                                         "$$description": [
#14 24.24                                             "Reference to a Python object. It is either in the form",
#14 24.24                                             "``importable.module``, or ``importable.module:object.attr``."
#14 24.24                                         ],
#14 24.24                                         "format": "python-entrypoint-reference",
#14 24.24                                         "$comment": "https://packaging.python.org/specifications/entry-points/"
#14 24.24                                     }
#14 24.24                                 }
#14 24.24                             }
#14 24.24                         }
#14 24.24                     },
#14 24.24                     "dependencies": {
#14 24.24                         "type": "array",
#14 24.24                         "description": "Project (mandatory) dependencies.",
#14 24.24                         "items": {
#14 24.24                             "$id": "#/definitions/dependency",
#14 24.24                             "title": "Dependency",
#14 24.24                             "type": "string",
#14 24.24                             "description": "Project dependency specification according to PEP 508",
#14 24.24                             "format": "pep508"
#14 24.24                         }
#14 24.24                     },
#14 24.24                     "optional-dependencies": {
#14 24.24                         "type": "object",
#14 24.24                         "description": "Optional dependency for the project",
#14 24.24                         "propertyNames": {
#14 24.24                             "format": "pep508-identifier"
#14 24.24                         },
#14 24.24                         "additionalProperties": false,
#14 24.24                         "patternProperties": {
#14 24.24                             "^.+$": {
#14 24.24                                 "type": "array",
#14 24.24                                 "items": {
#14 24.24                                     "$id": "#/definitions/dependency",
#14 24.24                                     "title": "Dependency",
#14 24.24                                     "type": "string",
#14 24.24                                     "description": "Project dependency specification according to PEP 508",
#14 24.24                                     "format": "pep508"
#14 24.24                                 }
#14 24.24                             }
#14 24.24                         }
#14 24.24                     },
#14 24.24                     "dynamic": {
#14 24.24                         "type": "array",
#14 24.24                         "$$description": [
#14 24.24                             "Specifies which fields are intentionally unspecified and expected to be",
#14 24.24                             "dynamically provided by build tools"
#14 24.24                         ],
#14 24.24                         "items": {
#14 24.24                             "enum": [
#14 24.24                                 "version",
#14 24.24                                 "description",
#14 24.24                                 "readme",
#14 24.24                                 "requires-python",
#14 24.24                                 "license",
#14 24.24                                 "authors",
#14 24.24                                 "maintainers",
#14 24.24                                 "keywords",
#14 24.24                                 "classifiers",
#14 24.24                                 "urls",
#14 24.24                                 "scripts",
#14 24.24                                 "gui-scripts",
#14 24.24                                 "entry-points",
#14 24.24                                 "dependencies",
#14 24.24                                 "optional-dependencies"
#14 24.24                             ]
#14 24.24                         }
#14 24.24                     }
#14 24.24                 },
#14 24.24                 "required": [
#14 24.24                     "name"
#14 24.24                 ],
#14 24.24                 "additionalProperties": false,
#14 24.24                 "if": {
#14 24.24                     "not": {
#14 24.24                         "required": [
#14 24.24                             "version"
#14 24.24                         ],
#14 24.24                         "$$description": [
#14 24.24                             "version is statically defined in the ``version`` field"
#14 24.24                         ]
#14 24.24                     },
#14 24.24                     "$$comment": [
#14 24.24                         "According to :pep:`621`:",
#14 24.24                         "    If the core metadata specification lists a field as \"Required\", then",
#14 24.24                         "    the metadata MUST specify the field statically or list it in dynamic",
#14 24.24                         "In turn, `core metadata`_ defines:",
#14 24.24                         "    The required fields are: Metadata-Version, Name, Version.",
#14 24.24                         "    All the other fields are optional.",
#14 24.24                         "Since ``Metadata-Version`` is defined by the build back-end, ``name`` and",
#14 24.24                         "``version`` are the only mandatory information in ``pyproject.toml``.",
#14 24.24                         ".. _core metadata: https://packaging.python.org/specifications/core-metadata/"
#14 24.24                     ]
#14 24.24                 },
#14 24.24                 "then": {
#14 24.24                     "properties": {
#14 24.24                         "dynamic": {
#14 24.24                             "contains": {
#14 24.24                                 "const": "version"
#14 24.24                             },
#14 24.24                             "$$description": [
#14 24.24                                 "version should be listed in ``dynamic``"
#14 24.24                             ]
#14 24.24                         }
#14 24.24                     }
#14 24.24                 },
#14 24.24                 "definitions": {
#14 24.24                     "author": {
#14 24.24                         "$id": "#/definitions/author",
#14 24.24                         "title": "Author or Maintainer",
#14 24.24                         "$comment": "https://www.python.org/dev/peps/pep-0621/#authors-maintainers",
#14 24.24                         "type": "object",
#14 24.24                         "properties": {
#14 24.24                             "name": {
#14 24.24                                 "type": "string",
#14 24.24                                 "$$description": [
#14 24.24                                     "MUST be a valid email name, i.e. whatever can be put as a name, before an",
#14 24.24                                     "email, in :rfc:`822`."
#14 24.24                                 ]
#14 24.24                             },
#14 24.24                             "email": {
#14 24.24                                 "type": "string",
#14 24.24                                 "format": "idn-email",
#14 24.24                                 "description": "MUST be a valid email address"
#14 24.24                             }
#14 24.24                         }
#14 24.24                     },
#14 24.24                     "entry-point-group": {
#14 24.24                         "$id": "#/definitions/entry-point-group",
#14 24.24                         "title": "Entry-points",
#14 24.24                         "type": "object",
#14 24.24                         "$$description": [
#14 24.24                             "Entry-points are grouped together to indicate what sort of capabilities they",
#14 24.24                             "provide.",
#14 24.24                             "See the `packaging guides",
#14 24.24                             "<https://packaging.python.org/specifications/entry-points/>`_",
#14 24.24                             "and `setuptools docs",
#14 24.24                             "<https://setuptools.pypa.io/en/latest/userguide/entry_point.html>`_",
#14 24.24                             "for more information."
#14 24.24                         ],
#14 24.24                         "propertyNames": {
#14 24.24                             "format": "python-entrypoint-name"
#14 24.24                         },
#14 24.24                         "additionalProperties": false,
#14 24.24                         "patternProperties": {
#14 24.24                             "^.+$": {
#14 24.24                                 "type": "string",
#14 24.24                                 "$$description": [
#14 24.24                                     "Reference to a Python object. It is either in the form",
#14 24.24                                     "``importable.module``, or ``importable.module:object.attr``."
#14 24.24                                 ],
#14 24.24                                 "format": "python-entrypoint-reference",
#14 24.24                                 "$comment": "https://packaging.python.org/specifications/entry-points/"
#14 24.24                             }
#14 24.24                         }
#14 24.24                     },
#14 24.24                     "dependency": {
#14 24.24                         "$id": "#/definitions/dependency",
#14 24.24                         "title": "Dependency",
#14 24.24                         "type": "string",
#14 24.24                         "description": "Project dependency specification according to PEP 508",
#14 24.24                         "format": "pep508"
#14 24.24                     }
#14 24.24                 }
#14 24.24             }
#14 24.24         Traceback (most recent call last):
#14 24.24           File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
#14 24.24             main()
#14 24.24           File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
#14 24.24             json_out['return_val'] = hook(**hook_input['kwargs'])
#14 24.24           File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 164, in prepare_metadata_for_build_wheel
#14 24.24             return hook(metadata_directory, config_settings)
#14 24.24           File "/tmp/pip-build-env-cukg_z95/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 188, in prepare_metadata_for_build_wheel
#14 24.24             self.run_setup()
#14 24.24           File "/tmp/pip-build-env-cukg_z95/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 174, in run_setup
#14 24.24             exec(compile(code, __file__, 'exec'), locals())
#14 24.24           File "setup.py", line 68, in <module>
#14 24.24             setup(
#14 24.24           File "/tmp/pip-build-env-cukg_z95/overlay/lib/python3.10/site-packages/setuptools/__init__.py", line 77, in setup
#14 24.24             return distutils.core.setup(**attrs)
#14 24.24           File "/tmp/pip-build-env-cukg_z95/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 122, in setup
#14 24.24             dist.parse_config_files()
#14 24.24           File "/tmp/pip-build-env-cukg_z95/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 836, in parse_config_files
#14 24.24             pyprojecttoml.apply_configuration(self, filename, ignore_option_errors)
#14 24.24           File "/tmp/pip-build-env-cukg_z95/overlay/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py", line 52, in apply_configuration
#14 24.24             config = read_configuration(filepath, True, ignore_option_errors, dist)
#14 24.24           File "/tmp/pip-build-env-cukg_z95/overlay/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py", line 114, in read_configuration
#14 24.24             validate(subset, filepath)
#14 24.24           File "/tmp/pip-build-env-cukg_z95/overlay/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py", line 43, in validate
#14 24.24             raise error from None
#14 24.24         ValueError: invalid pyproject.toml config: `project`
#14 24.24         [end of output]
#14 24.24     
#14 24.24     note: This error originates from a subprocess, and is likely not a problem with pip.
#14 24.24   error: metadata-generation-failed
#14 24.24   
#14 24.24   × Encountered error while generating package metadata.
#14 24.24   ╰─> See above for output.
#14 24.24   
#14 24.24   note: This is an issue with the package mentioned above, not pip.
#14 24.24   hint: See above for details.
#14 24.24   
#14 24.24 
#14 24.24   at /usr/local/lib/python3.10/site-packages/poetry/utils/env.py:1195 in _run
#14 24.26       1191│                 output = subprocess.check_output(
#14 24.26       1192│                     cmd, stderr=subprocess.STDOUT, **kwargs
#14 24.26       1193│                 )
#14 24.26       1194│         except CalledProcessError as e:
#14 24.26     → 1195│             raise EnvCommandError(e, input=input_)
#14 24.26       1196│ 
#14 24.26       1197│         return decode(output)
#14 24.26       1198│ 
#14 24.26       1199│     def execute(self, bin, *args, **kwargs):
#14 24.26

let me try