You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
msgid "This specification defines Dependency Groups, a mechanism for storing package requirements in ``pyproject.toml`` files such that they are not included in project metadata when it is built."
msgid "The job of a dependency is to enable tools like pip [#pip]_ to find the right package to install. Sometimes this is very loose - just specifying a name, and sometimes very specific - referring to a specific file to install. Sometimes dependencies are only relevant in one platform, or only some versions are acceptable, so the language permits describing all these cases."
msgid "Dependency Groups are suitable for internal development use-cases like linting and testing, as well as for projects which are not built for distribution, like collections of related scripts."
msgid "The language defined is a compact line based format which is already in widespread use in pip requirements files, though we do not specify the command line option handling that those files permit. There is one caveat - the URL reference form, specified in :ref:`Versioning specifier specification <version-specifiers>` is not actually implemented in pip, but we use that format rather than pip's current native format."
msgid "Fundamentally, Dependency Groups should be thought of as being a standardized subset of the capabilities of ``requirements.txt`` files (which are ``pip``-specific)."
msgid "Dependency Groups are defined as a table in ``pyproject.toml`` named ``dependency-groups``. The ``dependency-groups`` table contains an arbitrary number of user-defined keys, each of which has, as its value, a list of requirements."
msgid "``[dependency-groups]`` keys, sometimes also called \"group names\", must be :ref:`valid non-normalized names <name-format>`. Tools which handle Dependency Groups MUST :ref:`normalize <name-normalization>` these names before comparisons."
msgid "Tools SHOULD prefer to present the original, non-normalized name to users, and if duplicate names are detected after normalization, tools SHOULD emit an error."
msgid "Requirement lists, the values in ``[dependency-groups]``, may contain strings, tables (``dict`` in Python), or a mix of strings and tables. Strings must be valid :ref:`dependency specifiers <dependency-specifiers>`, and tables must be valid Dependency Group Includes."
msgid "Includes are defined to be exactly equivalent to the contents of the named Dependency Group, inserted into the current group at the location of the include. For example, if ``foo = [\"a\", \"b\"]`` is one group, and ``bar = [\"c\", {include-group = \"foo\"}, \"d\"]`` is another, then ``bar`` should evaluate to ``[\"c\", \"a\", \"b\", \"d\"]`` when Dependency Group Includes are expanded."
msgid "Dependency Group Includes may specify the same package multiple times. Tools SHOULD NOT deduplicate or otherwise alter the list contents produced by the include. For example, given the following table:"
msgid "The resolved value of ``all`` SHOULD be ``[\"foo\", \"foo\", \"foo>1.0\", \"foo<1.0\"]``. Tools should handle such a list exactly as they would handle any other case in which they are asked to process the same requirement multiple times with different version constraints."
msgid "Dependency Group Includes may include groups containing Dependency Group Includes, in which case those includes should be expanded as well. Dependency Group Includes MUST NOT include cycles, and tools SHOULD report an error if they detect a cycle."
msgid "Build backends MUST NOT include Dependency Group data in built distributions as package metadata. This means that sdist ``PKG-INFO`` and wheel ``METADATA`` files should not include referenceable fields containing Dependency Groups."
msgid "It is, however, valid to use Dependency Groups in the evaluation of dynamic metadata, and ``pyproject.toml`` files included in sdists will still contain ``[dependency-groups]``. However, the table's contents are not part of a built package's interfaces."
msgid "There is no syntax or specification-defined interface for installing or referring to Dependency Groups. Tools are expected to provide dedicated interfaces for this purpose."
msgid "Tools MAY choose to provide the same or similar interfaces for interacting with Dependency Groups as they do for managing extras. Tools authors are advised that the specification does not forbid having an extra whose name matches a Dependency Group. Separately, users are advised to avoid creating Dependency Groups whose names match extras, and tools MAY treat such matching as an error."
msgid "Tools supporting Dependency Groups may want to validate data before using it. When implementing such validation, authors should be aware of the possibility of future extensions to the specification, so that they do not unnecessarily emit errors or warnings."
msgid "This means that in the presence of the following data, most tools should allow the ``foo`` group to be used and only error if the ``bar`` group is used:"
msgid "There are several known cases of tools which have good cause to be stricter. Linters and validators are an example, as their purpose is to validate the contents of all Dependency Groups."
msgid "The following Reference Implementation prints the contents of a Dependency Group to stdout, newline delimited. The output is therefore valid ``requirements.txt`` data."
msgid "The job of a dependency is to enable tools like pip [#pip]_ to find the right package to install. Sometimes this is very loose - just specifying a name, and sometimes very specific - referring to a specific file to install. Sometimes dependencies are only relevant in one platform, or only some versions are acceptable, so the language permits describing all these cases."
msgid "The language defined is a compact line based format which is already in widespread use in pip requirements files, though we do not specify the command line option handling that those files permit. There is one caveat - the URL reference form, specified in :ref:`Versioning specifier specification <version-specifiers>` is not actually implemented in pip, but we use that format rather than pip's current native format."
0 commit comments