diff --git a/locales/ar/LC_MESSAGES/messages.po b/locales/ar/LC_MESSAGES/messages.po index a334f4dec..ca38f2980 100644 --- a/locales/ar/LC_MESSAGES/messages.po +++ b/locales/ar/LC_MESSAGES/messages.po @@ -4,13 +4,14 @@ # Monzer Ghannam , 2022. # Youcef Guenaoua , 2024. # Mohamed Brahimi , 2025. +# HAMDI KHALID , 2025. msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" -"PO-Revision-Date: 2025-01-19 01:44+0000\n" -"Last-Translator: Mohamed Brahimi \n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" +"PO-Revision-Date: 2025-12-15 04:00+0000\n" +"Last-Translator: HAMDI KHALID \n" "Language-Team: Arabic \n" "Language: ar\n" @@ -19,7 +20,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 5.10-dev\n" +"X-Generator: Weblate 5.15-dev\n" #: ../source/contribute.rst:5 msgid "Contribute to this guide" @@ -3411,9 +3412,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3586,54 +3587,54 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3641,11 +3642,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3654,11 +3655,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3666,26 +3667,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3697,38 +3698,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3737,21 +3738,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3760,11 +3761,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3772,15 +3773,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3788,21 +3789,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3955,7 +3956,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4311,7 +4312,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4633,7 +4634,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6692,11 +6693,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6732,7 +6734,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6745,29 +6748,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6779,65 +6782,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6846,18 +6849,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6866,11 +6869,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6880,7 +6883,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6889,11 +6892,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6905,24 +6908,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6930,17 +6933,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6951,11 +6954,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6963,14 +6966,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8746,7 +8749,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9362,40 +9365,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9403,25 +9410,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9429,45 +9436,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9478,31 +9485,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9906,7 +9913,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10011,90 +10018,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10103,26 +10110,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10130,28 +10137,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10159,33 +10166,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -10509,7 +10516,7 @@ msgstr "" #: ../source/key_projects.rst:157 msgid "packaging" -msgstr "" +msgstr "GitHub" #: ../source/key_projects.rst:159 msgid "" @@ -13236,86 +13243,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13324,116 +13327,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13443,51 +13375,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13495,7 +13387,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13503,18 +13395,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13523,7 +13415,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13534,7 +13426,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13552,7 +13444,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13561,7 +13453,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13575,24 +13467,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13600,24 +13492,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14371,11 +14267,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16207,17 +16103,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18225,7 +18127,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22277,7 +22179,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22316,7 +22218,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22536,14 +22438,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22577,7 +22479,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22585,45 +22487,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22631,7 +22533,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22640,23 +22542,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22665,14 +22567,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22682,7 +22584,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22690,14 +22592,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22707,45 +22609,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22754,7 +22656,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22764,17 +22666,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22782,7 +22684,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22791,11 +22693,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22803,11 +22705,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22870,11 +22772,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22883,65 +22785,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22949,7 +22851,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22960,7 +22862,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22969,33 +22871,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23005,7 +22907,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23015,7 +22917,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23023,7 +22925,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23034,22 +22936,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23058,25 +22960,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23084,13 +22986,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23100,18 +23002,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23119,7 +23021,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23129,7 +23031,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23137,7 +23039,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23145,7 +23047,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23154,18 +23056,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23173,13 +23075,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23188,23 +23090,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23213,79 +23115,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24852,11 +24754,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24865,29 +24769,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24895,101 +24799,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24997,29 +24901,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25031,7 +24935,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25040,14 +24944,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25056,7 +24960,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25064,7 +24968,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25075,15 +24979,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25091,7 +24995,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25099,7 +25003,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25111,43 +25015,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25156,29 +25060,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26544,7 +26452,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26583,11 +26491,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/ars/LC_MESSAGES/messages.po b/locales/ars/LC_MESSAGES/messages.po index 48a40afc7..01b1f0b06 100644 --- a/locales/ars/LC_MESSAGES/messages.po +++ b/locales/ars/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -3405,9 +3405,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3580,54 +3580,54 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3635,11 +3635,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3648,11 +3648,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3660,26 +3660,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3691,38 +3691,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3731,21 +3731,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3754,11 +3754,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3766,15 +3766,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3782,21 +3782,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3949,7 +3949,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4305,7 +4305,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4627,7 +4627,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6686,11 +6686,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6726,7 +6727,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6739,29 +6741,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6773,65 +6775,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6840,18 +6842,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6860,11 +6862,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6874,7 +6876,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6883,11 +6885,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6899,24 +6901,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6924,17 +6926,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6945,11 +6947,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6957,14 +6959,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8740,7 +8742,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9356,40 +9358,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9397,25 +9403,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9423,45 +9429,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9472,31 +9478,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9900,7 +9906,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10005,90 +10011,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10097,26 +10103,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10124,28 +10130,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10153,33 +10159,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13230,86 +13236,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13318,116 +13320,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13437,51 +13368,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13489,7 +13380,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13497,18 +13388,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13517,7 +13408,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13528,7 +13419,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13546,7 +13437,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13555,7 +13446,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13569,24 +13460,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13594,24 +13485,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14365,11 +14260,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16201,17 +16096,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18219,7 +18120,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22271,7 +22172,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22310,7 +22211,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22530,14 +22431,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22571,7 +22472,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22579,45 +22480,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22625,7 +22526,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22634,23 +22535,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22659,14 +22560,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22676,7 +22577,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22684,14 +22585,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22701,45 +22602,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22748,7 +22649,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22758,17 +22659,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22776,7 +22677,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22785,11 +22686,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22797,11 +22698,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22864,11 +22765,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22877,65 +22778,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22943,7 +22844,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22954,7 +22855,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22963,33 +22864,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -22999,7 +22900,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23009,7 +22910,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23017,7 +22918,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23028,22 +22929,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23052,25 +22953,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23078,13 +22979,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23094,18 +22995,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23113,7 +23014,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23123,7 +23024,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23131,7 +23032,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23139,7 +23040,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23148,18 +23049,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23167,13 +23068,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23182,23 +23083,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23207,79 +23108,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24846,11 +24747,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24859,29 +24762,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24889,101 +24792,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24991,29 +24894,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25025,7 +24928,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25034,14 +24937,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25050,7 +24953,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25058,7 +24961,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25069,15 +24972,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25085,7 +24988,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25093,7 +24996,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25105,43 +25008,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25150,29 +25053,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26538,7 +26445,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26577,11 +26484,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/cs/LC_MESSAGES/messages.po b/locales/cs/LC_MESSAGES/messages.po index 1928aedc0..4fd31b6b3 100644 --- a/locales/cs/LC_MESSAGES/messages.po +++ b/locales/cs/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-10-16 23:52+0000\n" "Last-Translator: Karolína Wallenfelsová \n" "Language-Team: Czech `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3646,11 +3646,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3659,11 +3659,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3671,26 +3671,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3702,38 +3702,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3742,21 +3742,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3765,11 +3765,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3777,15 +3777,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3793,21 +3793,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3960,7 +3960,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4316,7 +4316,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4638,7 +4638,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6697,11 +6697,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6737,7 +6738,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6750,29 +6752,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6784,65 +6786,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6851,18 +6853,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6871,11 +6873,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6885,7 +6887,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6894,11 +6896,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6910,24 +6912,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6935,17 +6937,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6956,11 +6958,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6968,14 +6970,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8751,7 +8753,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9367,40 +9369,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9408,25 +9414,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9434,45 +9440,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9483,31 +9489,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9911,7 +9917,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10016,90 +10022,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10108,26 +10114,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10135,28 +10141,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10164,33 +10170,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13241,86 +13247,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13329,116 +13331,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13448,51 +13379,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13500,7 +13391,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13508,18 +13399,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13528,7 +13419,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13539,7 +13430,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13557,7 +13448,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13566,7 +13457,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13580,24 +13471,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13605,24 +13496,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14376,11 +14271,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16212,17 +16107,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18230,7 +18131,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22282,7 +22183,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22321,7 +22222,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22541,14 +22442,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22582,7 +22483,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22590,45 +22491,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22636,7 +22537,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22645,23 +22546,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22670,14 +22571,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22687,7 +22588,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22695,14 +22596,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22712,45 +22613,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22759,7 +22660,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22769,17 +22670,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22787,7 +22688,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22796,11 +22697,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22808,11 +22709,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22875,11 +22776,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22888,65 +22789,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22954,7 +22855,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22965,7 +22866,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22974,33 +22875,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23010,7 +22911,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23020,7 +22921,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23028,7 +22929,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23039,22 +22940,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23063,25 +22964,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23089,13 +22990,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23105,18 +23006,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23124,7 +23025,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23134,7 +23035,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23142,7 +23043,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23150,7 +23051,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23159,18 +23060,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23178,13 +23079,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23193,23 +23094,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23218,79 +23119,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24857,11 +24758,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24870,29 +24773,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24900,101 +24803,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25002,29 +24905,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25036,7 +24939,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25045,14 +24948,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25061,7 +24964,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25069,7 +24972,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25080,15 +24983,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25096,7 +24999,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25104,7 +25007,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25116,43 +25019,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25161,29 +25064,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26549,7 +26456,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26588,11 +26495,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/da/LC_MESSAGES/messages.po b/locales/da/LC_MESSAGES/messages.po index 7f80227ad..fefc1b9db 100644 --- a/locales/da/LC_MESSAGES/messages.po +++ b/locales/da/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-10-09 04:07+0000\n" "Last-Translator: Philip Mallegol-Hansen \n" "Language-Team: Danish `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3640,11 +3640,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3653,11 +3653,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3665,26 +3665,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3696,38 +3696,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3736,21 +3736,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3759,11 +3759,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3771,15 +3771,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3787,21 +3787,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3954,7 +3954,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4310,7 +4310,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4632,7 +4632,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6691,11 +6691,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6731,7 +6732,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6744,29 +6746,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6778,65 +6780,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6845,18 +6847,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6865,11 +6867,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6879,7 +6881,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6888,11 +6890,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6904,24 +6906,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6929,17 +6931,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6950,11 +6952,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6962,14 +6964,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8745,7 +8747,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9361,40 +9363,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9402,25 +9408,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9428,45 +9434,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9477,31 +9483,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9905,7 +9911,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10010,90 +10016,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10102,26 +10108,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10129,28 +10135,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10158,33 +10164,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13235,86 +13241,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13323,116 +13325,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13442,51 +13373,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13494,7 +13385,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13502,18 +13393,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13522,7 +13413,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13533,7 +13424,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13551,7 +13442,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13560,7 +13451,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13574,24 +13465,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13599,24 +13490,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14370,11 +14265,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16206,17 +16101,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18224,7 +18125,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22276,7 +22177,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22315,7 +22216,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22535,14 +22436,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22576,7 +22477,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22584,45 +22485,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22630,7 +22531,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22639,23 +22540,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22664,14 +22565,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22681,7 +22582,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22689,14 +22590,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22706,45 +22607,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22753,7 +22654,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22763,17 +22664,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22781,7 +22682,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22790,11 +22691,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22802,11 +22703,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22869,11 +22770,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22882,65 +22783,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22948,7 +22849,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22959,7 +22860,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22968,33 +22869,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23004,7 +22905,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23014,7 +22915,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23022,7 +22923,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23033,22 +22934,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23057,25 +22958,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23083,13 +22984,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23099,18 +23000,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23118,7 +23019,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23128,7 +23029,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23136,7 +23037,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23144,7 +23045,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23153,18 +23054,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23172,13 +23073,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23187,23 +23088,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23212,79 +23113,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24851,11 +24752,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24864,29 +24767,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24894,101 +24797,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24996,29 +24899,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25030,7 +24933,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25039,14 +24942,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25055,7 +24958,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25063,7 +24966,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25074,15 +24977,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25090,7 +24993,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25098,7 +25001,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25110,43 +25013,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25155,29 +25058,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26543,7 +26450,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26582,11 +26489,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/de/LC_MESSAGES/messages.po b/locales/de/LC_MESSAGES/messages.po index 419d6cc80..dae18af75 100644 --- a/locales/de/LC_MESSAGES/messages.po +++ b/locales/de/LC_MESSAGES/messages.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-10-28 15:43+0000\n" "Last-Translator: Norah-14 \n" "Language-Team: German `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3932,11 +3932,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3945,11 +3945,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3957,26 +3957,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3988,38 +3988,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "Quellenarchiv" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -4028,21 +4028,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "Spezifikation der Version" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -4051,11 +4051,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -4063,16 +4063,16 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 #, fuzzy msgid "Wheel" msgstr "Wheel" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -4080,23 +4080,23 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 #, fuzzy #| msgid "Per Project Index" msgid "Wheel Project" msgstr "Pro Projekt Index" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -4249,7 +4249,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4605,7 +4605,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4929,7 +4929,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6993,11 +6993,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -7033,7 +7034,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -7046,29 +7048,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -7080,65 +7082,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -7147,18 +7149,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -7167,11 +7169,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -7181,7 +7183,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -7190,11 +7192,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -7206,24 +7208,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -7231,17 +7233,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -7252,11 +7254,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7264,14 +7266,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -9050,7 +9052,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9666,41 +9668,45 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy msgid "Building distributions" msgstr "Distributionspaket" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9708,25 +9714,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9734,45 +9740,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9783,31 +9789,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -10211,7 +10217,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10316,90 +10322,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10408,26 +10414,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10435,28 +10441,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10464,33 +10470,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13541,86 +13547,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13629,116 +13631,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13748,51 +13679,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13800,7 +13691,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13808,18 +13699,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13828,7 +13719,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13839,7 +13730,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13857,7 +13748,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13866,7 +13757,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13880,24 +13771,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13905,24 +13796,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14680,11 +14575,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16522,17 +16417,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18547,7 +18448,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22616,7 +22517,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22655,7 +22556,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22875,14 +22776,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22916,7 +22817,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22924,45 +22825,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22970,7 +22871,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22979,23 +22880,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -23004,14 +22905,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -23021,7 +22922,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -23029,14 +22930,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -23046,45 +22947,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -23093,7 +22994,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -23103,17 +23004,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -23121,7 +23022,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -23130,11 +23031,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -23142,11 +23043,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -23209,11 +23110,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -23222,65 +23123,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23288,7 +23189,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23299,7 +23200,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23308,33 +23209,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23344,7 +23245,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23354,7 +23255,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23362,7 +23263,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23373,22 +23274,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23397,25 +23298,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23423,13 +23324,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23439,18 +23340,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23458,7 +23359,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23468,7 +23369,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23476,7 +23377,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23484,7 +23385,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23493,18 +23394,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23512,13 +23413,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23527,23 +23428,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23552,79 +23453,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -25191,11 +25092,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -25204,29 +25107,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -25234,101 +25137,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25336,29 +25239,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25370,7 +25273,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25379,14 +25282,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25395,7 +25298,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25403,7 +25306,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25414,15 +25317,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25430,7 +25333,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25438,7 +25341,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25450,43 +25353,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25495,29 +25398,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26883,7 +26790,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26922,11 +26829,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/eo/LC_MESSAGES/messages.po b/locales/eo/LC_MESSAGES/messages.po index 78a847e9c..2d8ea11f1 100644 --- a/locales/eo/LC_MESSAGES/messages.po +++ b/locales/eo/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-06-29 12:03+0000\n" "Last-Translator: phlostically \n" "Language-Team: Esperanto `, priskribanta(j) " @@ -4645,13 +4651,22 @@ msgid "Python Packaging Authority (PyPA)" msgstr "Python-Pakada Aŭtoritato (PyPA)" #: ../source/glossary.rst:287 +#, fuzzy +#| msgid "" +#| "PyPA is a working group that maintains many of the relevant projects in " +#| "Python packaging. They maintain a site at :doc:`pypa.io `, " +#| "host projects on `GitHub `_ and `Bitbucket " +#| "`_, and discuss issues on the `distutils-sig " +#| "mailing list `_ and `the Python Discourse forum `__." msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" "PyPA estas laborgrupo mastrumanta multajn projektojn pri pakado de Python. " "Ĝia retejo estas :doc:`pypa.io `. Ĝi gastigas projektojn ĉe " @@ -4660,11 +4675,11 @@ msgstr "" "mail.python.org/mailman3/lists/distutils-sig.python.org/>`_ kaj `la forumo " "Discourse por Python `__." -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "Python-Pakindekso (PyPI)" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " @@ -4674,11 +4689,11 @@ msgstr "" "por la Python-komunumo. Ĉiu Python-programisto povas uzi ĝin por uzi kaj " "distribui siajn distribuojn." -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "pypi.org" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " @@ -4688,22 +4703,22 @@ msgstr "" "Pakindekso (PyPI) `. Ĝi anstataŭis la malnovan " "retadreson, ``pypi.python.org``, en 2017. Ĝi funkciiĝas per :ref:`warehouse`." -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "pyproject.toml" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" "La ilo-sendependa :term:`projekta ` specifa dosiero. Difinita " "en :pep:`518`." -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "Eldono" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." @@ -4711,7 +4726,7 @@ msgstr "" "Kopio de :term:`Projekto ` ĉe iu punkto en tempo, indikita de " "versia identigilo." -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -4723,11 +4738,11 @@ msgstr "" "projekto, oni povus disponigi ĝin kiel kaj fontan distribuon kaj Windows-" "instalilan dosierformon." -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "Postulo" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -4740,11 +4755,11 @@ msgstr "" "permesas diversajn formojn de «postuloj». Por pliaj detaloj, " "vidu :ref:`pip:pip install`." -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "Postulo-Specifilo" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -4757,11 +4772,11 @@ msgstr "" "estas la nomo de la projekto kaj ``>=1.3`` estas la :term:`versio-specifilo " "`" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "Postulo-Dosiero" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " @@ -4771,15 +4786,15 @@ msgstr "" "per :ref:`pip`. Por plian informoj, vidu la dokumentaron de :ref:`pip` " "pri :ref:`Postulo-Dosieroj `." -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "Radika Licenco-Dosierujo" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "Licenco-Dosierujo" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -4802,17 +4817,17 @@ msgstr "" "dosierlokoj en la :term:`Kerna Metadatena Kampo ` " "``License-File``." -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "setup.py" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "setup.cfg" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." @@ -4820,11 +4835,11 @@ msgstr "" "La projektaj specifaj dosieroj por :ref:`distutils` kaj :ref:`setuptools`. " "Vidu ankaŭ :term:`pyproject.toml`." -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "Fonta Arĥivo" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` " "aŭ :term:`Konstruita Distribuo `." -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "Fonta Distribuo (aŭ «sdist»)" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -4847,21 +4862,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "Sistema Pako" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "Pako en formo indiĝena al la mastruma sistemo, ekz. rpm aŭ dpkg." -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "Versio-Specifilo" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -4870,11 +4885,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "Virtuala Medio" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -4885,15 +4900,15 @@ msgstr "" "anstataŭ tutsistema instalado. Por pliaj informoj, vidu :ref:`Krei kaj uzi " "Virtualan Medion `." -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "Wheel-Formo" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "Wheel" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -4906,11 +4921,11 @@ msgstr "" "konfuzu ĝin kun ĝia referenca realigo, :term:`la Projekto Wheel `." -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "Wheel-Projekto" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." @@ -4918,11 +4933,11 @@ msgstr "" "La referenca realigo far PyPA de la :term:`Wheel-Formo `; " "vidu :ref:`wheel`." -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "Aro de Laboro" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -5118,7 +5133,7 @@ msgstr "Priskribo" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "Ekzemploj" @@ -5523,7 +5538,7 @@ msgstr "" "`Pandas`_." #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "Referencoj" @@ -5967,7 +5982,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" "Tamen, tiu sintakso estas praktike netaŭga: ĉar la nomo de la enirpunkto " "difinita ĉi-supre ne egalas la nomon de la pako, ni devas eksplici la " @@ -8587,12 +8602,20 @@ msgid "Licensing examples and user scenarios" msgstr "Ekzemploj de licencoj kaj uzkazoj" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 -msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +#, fuzzy +#| msgid "" +#| ":pep:`639` has specified the way to declare a project's license and paths " +#| "to license files and other legally required information. This document " +#| "aims to provide clear guidance how to migrate from the legacy to the " +#| "standardized way of declaring licenses. Make sure your preferred build " +#| "backend supports :pep:`639` before trying to apply the newer guidelines." +msgid "" +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" ":pep:`639` precizigis la manieron deklari la licencon de projekto kaj " "dosierlokojn de licencodosieroj kaj aliajn leĝe postulataj informoj. Ĉi tiu " @@ -8640,7 +8663,11 @@ msgstr "" "Aŭ, se la projekto uzis :file:`setup.cfg` en sia tabelo ``[metadata]``:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +#, fuzzy +#| msgid "" +#| "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "La eligitaj Kernaj Metdatenoj por la distribuaj pakoj estos jenaj:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -8659,11 +8686,11 @@ msgstr "" "arĥivo, kaj ``{VERSIO}`` la versio de la eldono de Setuptools laŭ Kernaj " "Metadatenoj." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "Altnivela ekzemplo" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " @@ -8673,11 +8700,13 @@ msgstr "" "la dosierujoj :file:`setuptools/_vendor/` kaj :file:`pkg_resources/_vendor/" "`; specife:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" -msgstr "Jen la licenco-esprimoj por tiuj projektoj:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +#, fuzzy +#| msgid "Examples of invalid license expressions:" +msgid "The appropriate license expressions are:" +msgstr "Ekzemploj de nevalidaj licenco-esprimoj:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " @@ -8687,7 +8716,7 @@ msgstr "" "dependaĵoj enhavus tiujn metadatenojn, kombinante ĉiujn licenco-esprimojn. " "Tia esprimo povas esti jena:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -8699,7 +8728,7 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " @@ -8709,11 +8738,11 @@ msgstr "" "projekta fontarbo (relative al la projekta radiko " "kaj :file:`pyproject.toml`):" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "Resume, la dosiero :file:`pyproject.toml` estos jena:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" @@ -8721,18 +8750,18 @@ msgstr "" "Alternative, la licenco-dosiero povas esti specifita eksplicite (dosierloko " "interpretiĝas kiel patroneo):" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "Se nia projekto uzus :file:`setup.cfg`, ni povus difini tion en:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" "Per ambaŭ metodoj, la eligitaj Kernaj Metadatenoj en la distribuo estos " "jenaj:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " @@ -8742,7 +8771,7 @@ msgstr "" "``{VERSION}`` la versio de la eldono de Setuptools specifita en la Kernaj " "Metadatenoj, la licenco-dosieroj troviĝus ĉe:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" @@ -8751,7 +8780,7 @@ msgstr "" "``{VERSION}`` sama kiel la ĉi-supra ekzemplo, la licenco-dosieroj troviĝus " "ĉe:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " @@ -8760,19 +8789,19 @@ msgstr "" "Fine, en la instalita projekto en :file:`site-packages/`, kun ``{VERSION}`` " "sama kiel la ĉi-supra ekzemplo, la licenco-dosieroj instaliĝus al:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "Ekzemploj de esprimoj" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "Kelkaj pliaj ekzemploj de validaj valoroj de ``License-Expression``:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "Uzkazoj" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -8781,11 +8810,11 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "Mi havas ne distribuotan privatan pakon" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " @@ -8795,7 +8824,7 @@ msgstr "" "familio), *ordinare* ne necesas inkluzivi formalan licencon, tiel ke vi ne " "devas fari ion ekstre." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -8804,11 +8833,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "Mi simple volas disdoni mian verkon sen jura restrikto" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -8824,7 +8853,7 @@ msgstr "" "kaj permesas al ĉiuj fari ion ajn deziratan pri via laboro (krom procesi " "kontraŭ vi, kion vi verŝajne ankaŭ ne deziras)." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -8838,11 +8867,11 @@ msgstr "" "``license = \"MIT\"`` sub ``[project]`` en :file:`pyproject.toml` se via " "pakilo subtenas ĝin, aŭ en ĝia agorda dosiero. Jen finite!" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "Mi volas distribui mian projekton sub specifa licenco" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -8862,7 +8891,7 @@ msgstr "" "troviĝas en retejoj kiel `ChooseALicense `__ aŭ `SPDX " "`__." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." @@ -8870,11 +8899,11 @@ msgstr "" "Multaj popularaj kodgastigejoj, projekto-ŝablonoj kaj pakiloj povas aldoni " "la licenco-dosieron por vi kaj povos subteni la esprimon." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "Mi mastrumas ekzistantan pakon sub licenco" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " @@ -8883,7 +8912,17 @@ msgstr "" "Se vi jam havas licencajn dosierojn kaj metadatenojn en via projekto, vi nur " "devas fari kelkajn ŝanĝetojn por uzi la novajn funkciojn." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 +#, fuzzy +#| msgid "" +#| "In your project config file, enter your license expression under " +#| "``license`` (``[project]`` table in :file:`pyproject.toml`), or the " +#| "equivalent for your packaging tool, and make sure to remove any legacy " +#| "``license`` table subkeys or ``License ::`` classifiers. Your existing " +#| "``license`` value may already be valid as one (e.g. ``MIT``, ``Apache-2.0 " +#| "OR BSD-2-Clause``, etc); otherwise, check the `SPDX license list " +#| "`__ for the identifier that matches the license used in your " +#| "project." msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -8891,7 +8930,7 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" "En via projekta agorda dosiero, tajpu vian licenco-esprimon sub ``license`` " "(tabelo ``[project]`` en :file:`pyproject.toml`), aŭ la ekvivalentaĵon de " @@ -8901,7 +8940,7 @@ msgstr "" "ktp); alie, vidu la `liston de SPDX-licencoj `__ por la " "identigilo por la licenco de via projekto." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " @@ -8910,7 +8949,7 @@ msgstr "" "Certe listigu viajn licenco-dosierojn sub ``license-files`` sub " "``[project]`` en :file:`pyproject.toml` aŭ en la agorda dosiero de via ilo." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -8921,11 +8960,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "Mia pako inkluzivas alian kodon sub malsamaj licencoj" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -8933,14 +8972,23 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 -msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 +#, fuzzy +#| msgid "" +#| "In short, ``License-1 AND License-2`` mean that *both* licenses apply to " +#| "your project, or parts of it (for example, you included a file under " +#| "another license), and ``License-1 OR License-2`` means that *either* of " +#| "the licenses can be used, at the user's option (for example, you want to " +#| "allow users a choice of multiple licenses). You can use parenthesis " +#| "(``()``) for grouping to form expressions that cover even the most " +#| "complex situations." +msgid "" +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" "Resume, ``Licenco-1 AND Licenco-2`` signifas, ke *ambaŭ* licencoj efektivas " "pri la projekto aŭ partoj de la projekto (ekzemple, la aŭtoro inkluzivis " @@ -11212,8 +11260,13 @@ msgstr "" "aŭtomatan testadon por Linux, Mac kaj Windows:" #: ../source/guides/supporting-multiple-python-versions.rst:65 +#, fuzzy +#| msgid "" +#| "`Travis CI `_ provides both a Linux and a macOS " +#| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#| "bit while the macOS is 10.9.2 at the time of writing." msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -12059,7 +12112,13 @@ msgstr "" "biblioteko en Python 3.12, kvankam ĝi estas ankoraŭ disponebla per " "setuptools." -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +#, fuzzy +#| msgid "Building binary extensions" +msgid "Build backends for extension modules" +msgstr "Konstrui duumajn etendaĵojn" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " @@ -12068,7 +12127,7 @@ msgstr "" "Por pako kun :term:`etendaĵa modulo `, oni uzu " "konstrusistemon subtenantan la lingvon de la etendaĵo. Ekzemple:" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," @@ -12076,7 +12135,7 @@ msgstr "" ":ref:`setuptools` -- indiĝene subtenas C kaj C++ (kun triapartiaj kromaĵoj " "por Go kaj Rust)," -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," @@ -12084,7 +12143,7 @@ msgstr "" ":ref:`meson-python` -- C, C++, Fortrano, Rust, kaj aliaj lingvoj subtenataj " "de Meson," -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," @@ -12092,15 +12151,15 @@ msgstr "" ":ref:`scikit-build-core` -- C, C++, Fortrano, kaj aliaj lingvoj subtenataj " "de CMake," -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr ":ref:`maturin` -- Rust, per Cargo." -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "Konstrui distribuojn" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -12112,7 +12171,7 @@ msgstr "" "estas :ref:`build`. Ĝi rulas la malfasadon :ref:`deklaritan ` en :file:`pyproject.toml`." -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " @@ -12122,7 +12181,7 @@ msgstr "" "tiu tasko. Ĉia rekta alvoko de :file:`setup.py` estas :ref:`evitinda `." -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " @@ -12132,11 +12191,11 @@ msgstr "" "wheel-ojn por pluraj platformoj, uzu :ref:`cibuildwheel` kiel parton de via " "kontinua integrado por konstrui distribueblajn wheel-ojn." -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "Alŝuti al PyPI" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -12144,7 +12203,7 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" @@ -12152,30 +12211,30 @@ msgstr "" "Je la Novembro de 2024, PyPI subtenas la jenajn platformojn kiel " "provizantojn de Fidata Eldonado:" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "GitHub Actions (ĉe ``https://github.com``)" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "GitLab CI/CD (ĉe ``https://gitlab.com``)" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "ActiveState" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "Google Cloud" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" "La alia havebla metodo estas alŝuti la pakon malaŭtomate per :ref:`twine`." -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." @@ -12183,11 +12242,11 @@ msgstr "" "**Neniam** uzu ``python setup.py upload`` por tiu tasko. Ĝi " "estas :ref:`evitinda ` kaj malseksura." -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "Laborfluiloj" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -12198,31 +12257,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr ":ref:`Flit`," -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr ":ref:`Hatch`," -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr ":doc:`nox `," -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr ":ref:`PDM`," -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr ":ref:`Pipenv`," -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr ":ref:`Poetry`," -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr ":doc:`tox `." @@ -12733,7 +12792,9 @@ msgid "``license`` and ``license-files``" msgstr "``license`` kaj ``license-files``" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +#, fuzzy +#| msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "Laŭ :pep:`639`, oni deklaru licencon per du kampoj:" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -12855,25 +12916,32 @@ msgstr "" "konfuziĝon, kaj ĉar kelkaj organizaĵoj evitas programon sen aprobita licenco." #: ../source/guides/writing-pyproject-toml.rst:353 -msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +#, fuzzy +#| msgid "" +#| "If your project is licensed with a license that doesn't have an existing " +#| "SPDX identifier, you can create a custom one in format ``LicenseRef-" +#| "[idstring]``. The custom identifiers must follow the SPDX specification, " +#| "`clause 10.1 `_ of the version 2.2 or any later " +#| "compatible one." +msgid "" +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" "Se via projekto havas licencon sen ekzistanta SPDX-identigilo, vi povas krei " "propran identigilo de la formo ``LicenseRef-[identigilo]``. La propra " "identigilo devas obei `paragrafon 10.1 `_ de la normo SPDX, " "versio 2.2 aŭ ajna pli nova kongrua versio." -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "``license-files``" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." @@ -12881,11 +12949,11 @@ msgstr "" "Tio estas listo de licenco-dosieroj kaj dosieroj enhavantaj aliajn jurajn " "informojn, kiujn vi volas distribui kun via pako." -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "La patroneo devas observi la specifon:" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." @@ -12893,17 +12961,17 @@ msgstr "" "Literoj, ciferoj, substrekoj (``_``), streketoj (``-``) kaj punktoj (``.``) " "prezentas sin laŭlitere." -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "La metasignoj ``*``, ``?``, ``**`` kaj signintervaloj [] eblas." -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "Dosierloko-apartigilo devas esti la suprenstreko (``/``)." -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." @@ -12911,15 +12979,15 @@ msgstr "" "Patroneo estas relativa al la dosierujo enhavanta :file:`pyproject.toml`, " "kaj tial ne povas komenciĝi per suprenstreko." -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "Indikilo de patra dosierujo (``..``) devas esti ne uzita." -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "Ĉiu patroneo devas kongrui kun almenaŭ unu dosiero." -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." @@ -12927,13 +12995,13 @@ msgstr "" "Eksplicita dosierloko estas valida patroneo. Ajna skribsigno aŭ signoĉeno ne " "diskutita de ĉi tiu specifo estas nevalida." -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -12941,13 +13009,13 @@ msgstr "" "Tio helpos la serĉilon de PyPI sugesti vian projekton, kiam oni serĉas tiujn " "ŝlosilvortojn." -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "``classifiers``" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -12955,7 +13023,7 @@ msgstr "" "Listo de PyPI-klasigiloj rilataj al via projekto. Jen la `plena listo de " "klasigiloj `_." -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -12964,7 +13032,7 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " @@ -12974,13 +13042,13 @@ msgstr "" "Do Not Upload``. PyPI ĉiam malakceptas pakon de klasigilo komenciĝanta per " "``Private ::``." -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -12988,7 +13056,7 @@ msgstr "" "Listo de retadresoj asociitaj al via projekto, montrotaj sur la maldekstra " "flankpanelo de via projekta paĝo ĉe PyPI." -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -13000,7 +13068,7 @@ msgstr "" "`_ por PyPI-specifa " "pritraktado de retadresoj." -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" @@ -13010,7 +13078,7 @@ msgstr "" "``Website = \"https://example.com\"`` sed ``\"Official Website\" = \"https://" "example.com\"``." -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " @@ -13020,7 +13088,7 @@ msgstr "" "retadresoj taŭge, ĉar iloj pri metadatenoj (kiel pakindeksoj) povas pli bone " "montri tiujn." -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " @@ -13029,7 +13097,7 @@ msgstr "" "Ekzemple, en la jenaj metadatenoj, ne ``MyHomepage`` nek ``\"Download " "Link\"`` estas bone konata etikedo kaj tial montriĝos laŭvorte:" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -13041,11 +13109,11 @@ msgstr "" "prezenteblaj tiel (kiel la ĉefpaĝo kaj la elŝutejo de la projekto " "respektive)." -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "Altnivelaj kromprogramoj" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " @@ -13055,17 +13123,17 @@ msgstr "" "Pygments_. Por krei tian kromprogramon, oni devas deklari ĝin en subtabelo " "de ``[project.entry-points]`` jene:" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" "Vidu la :ref:`Gvidilon pri kromprogramoj ` por pliaj " "informoj." -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "Plena ekzemplo" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -13074,7 +13142,7 @@ msgstr "" "Estu singarda pri supraj limoj kiel ``requires-python = \"<= 3.10\"`` ĉi " "tie. `Jen artikolo `_ pri eblaj problemoj." -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -16896,12 +16964,19 @@ msgid "WHEEL is the wheel metadata specific to a build of the package." msgstr "WHEEL estas la wheel-metadatenoj specifaj al iu konstruo de la pako." #: ../source/specifications/binary-distribution-format.rst:239 +#, fuzzy +#| msgid "" +#| "RECORD is a list of (almost) all the files in the wheel and their secure " +#| "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " +#| "hash of itself, must include its hash. The hash algorithm must be sha256 " +#| "or better; specifically, md5 and sha1 are not permitted, as signed wheel " +#| "files rely on the strong hashes in RECORD to validate the integrity of " +#| "the archive." msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" "RECORD estas listo de (preskaŭ) ĉiuj dosieroj en la wheel kaj iliaj sekuraj " "haketaĵoj. Male al PEP 376, ĉiu dosiero krom RECORD, kiu ne povas enhavi " @@ -16910,91 +16985,90 @@ msgstr "" "ĉar subskribita wheel-dosiero dependas de la fortikaj haketaĵoj en RECORD " "por la integrecon de la arĥivo." -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" "La INSTALLER kaj REQUESTED de PEP 376 ne estas inkluzivitaj en la arĥivo." -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" -"RECORD.jws estas uzataj por ciferecaj subskriboj. Ĝi ne estas menciita en " -"RECORD." - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -"RECORD.p7s estas permesata por tiuj, kiuj preferas uzi S/MIME-subskribon por " -"sekurigi wheel-dosieron. Ĝi ne menciiĝas en RECORD." -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 +#, fuzzy +#| msgid "" +#| "During extraction, wheel installers verify all the hashes in RECORD " +#| "against the file contents. Apart from RECORD and its signatures, " +#| "installation will fail if any file in the archive is not both mentioned " +#| "and correctly hashed in RECORD." msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" "Dum maldensigado, instalilo de wheel kontrolas ĉiujn haketaĵojn en " "``RECORD`` kaj la dosierajn enhavojn. Krom ``RECORD`` kaj subskriboj, " "instalado malsukcesos, se ajna dosiero en la arĥivo ne estas menciita en " "``RECORD`` aŭ ne kongruas kun sia haketaĵo." -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "Subdosierujoj en :file:`.dist-info/`" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "Nomo de subdosierujo" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "PEP / Normo" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "``licenses``" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr ":pep:`639`" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "``license_files``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "``LICENSES``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "``sboms``" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr ":pep:`770`" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "La dosierujo :file:`.dist-info/licenses/`" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -17008,22 +17082,22 @@ msgstr "" "kampoj ``License-File`` en la dosiero :file:`METADATA` ĉe la respektivaj " "dosierlokoj relativaj al la dosierujo :file:`licenses/`." -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "La dosierujo :file:`.dist-info/sboms/`" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "La dosierujo .data" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " @@ -17033,7 +17107,7 @@ msgstr "" "dosierujon .data, nomitan kiel la dosierujon .dist-info sed kun la " "sufikso .data/::" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " @@ -17043,110 +17117,16 @@ msgstr "" "dokumentoj ktp de la distribuo. Dum instalado, la enhavoj de tiuj " "dosierujoj kopiiĝas al siaj celaj dosierlokoj." -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "Subskribitaj wheel-dosieroj" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" -"Wheel-dosiero inkluzivas etenditan ``RECORD`` por ciferecaj subskriboj. La " -"``RECORD`` de PEP 376 estas modifita por inkluzivi sekuran haketaĵon " -"``digestname=urlsafe_b64encode_nopad(digest)`` (URL-sekura base64-kodado sen " -"finaj signoj ``=``) kiel la duan kolumnon anstataŭ md5sum. Ĉiaj eblaj eroj " -"havu haketaĵojn, inkluzive de generitaj dosieroj kiel ``.pyc``-dosieroj, " -"krom ``RECORD`` mem, kiu ne povas enhavi sian propran haketaĵon. Ekzemple::" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" -"La subskribo-dosiero(j) RECORD.jws kaj RECORD.p7s ne menciiĝas en RECORD, " -"ĉar ili estas nur aldoneblaj post la generado de RECORD. Ĉiu alia dosiero en " -"la arĥivo devas havi ĝustan haketaĵon en RECORD; se ne, la instalado " -"malsukcesos." - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" -"Se oni uzas JSON-retsubskriboj (JWS), unu aŭ pluraj subskriboj uzantaj JSON-" -"seriigon de JSON-retsubskribo (JWS-JS) konserviĝas en dosiero ``RECORD.jws`` " -"apud ``RECORD``. Oni uzas JWS por subskribi ``RECORD`` inkluzivante la " -"haketaĵon SHA-256 de ``RECORD`` kiel la JSON-ŝarĝon de la subskribo:" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "(La haketaĵa valoro estas la sama formo uzata en RECORD.)" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" -"Se RECORD.p7s estas uzata, ĝi devas enhavi malligitan S/MIME-forman " -"subskribon de RECORD." - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" -"Instalilo de wheel ne devas kompreni ciferecan subskribon sed DEVAS kompari " -"la haketaĵojn en ``RECORD`` al la enhavoj de la maldensigitaj dosieroj. Kiam " -"instalilo komparas la dosierajn haketaĵojn kaj ``RECORD``, aparta subskribo-" -"kontrolilo devas nur kontroli, ĉu ``RECORD`` kongruas kun la subskribo." - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "Vidu" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "https://datatracker.ietf.org/doc/html/rfc7515" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "https://datatracker.ietf.org/doc/html/rfc7517" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "Oftaj demandoj" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "Wheel difinas dosierujon .data. Ĉu mi metu ĉiom da miaj datenoj tien?" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -17161,62 +17141,11 @@ msgstr "" "``pkgutil.get_data(pako, risurso)``, eĉ se *tiuj* dosieroj ordinare ne " "distribuiĝas en la dosierujo ``.data`` de wheel." -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "Kial wheel inkluzivas alkroĉitajn subskribojn?" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" -"Alkroĉita subskribo estas pli oportuna ol nealkroĉita subskribo, ĉar ĝi " -"moviĝas kune kun la arĥivo. Ĉar nur la individuaj dosieroj estas " -"subskribitaj, la arĥivo estas redensigebla sen eksvalidigi la subskribon, " -"kaj individuaj dosieroj estas kontroleblaj sen reelŝutado de la tuta arĥivo." - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "Kial wheel permesas JWS-subskribojn?" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" -"La normoj JOSE, de kiuj JWS estas parto, estas laŭfasone facile realigebla; " -"tio estas ankaŭ unu el la fasonaj ĉefceloj de wheel. JWS ebligas utilan, " -"mallongan pure Python-an realigon." - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "Kial wheel ankaŭ permesas S/MIME-subskribojn?" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" -"S/MIME-subskribo estas permesata por tiuj uzantoj, kiuj devas aŭ volas uzi " -"ekzistantan publikŝlosilan infrastrukturon kun wheel." - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" -"Subskribita pako estas nur baza briko de sekura pako-ĝisdatiga sistemo. " -"Wheel nur provizas la bazan brikon." - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "Kio temas pri «purelib» kontraste kun «platlib»?" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -17228,7 +17157,7 @@ msgstr "" "lib/pythonX.Y/site-packages» kaj platformo-dependajn pakojn al «/usr/lib64/" "pythonX.Y/site-packages»." -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -17240,7 +17169,7 @@ msgstr "" "Purelib: true``» kun la samaj dosieroj en la radiko. Estas valide havi " "dosierojn en kaj «purelib» kaj «platlib»." -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " @@ -17250,11 +17179,11 @@ msgstr "" "estas pure Python-a aŭ ne, kaj tiaj dosieroj estu ĉe la radiko kun taŭgaj " "agordoj pri ``Root-is-purelib``." -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "Ĉu eblas importi Python-kodon rekte el wheel-dosiero?" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -17263,7 +17192,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -17280,7 +17209,7 @@ msgstr "" "por reviziado kaj sekurigo, aŭ plena integrado kun la norma konstrumeĥanismo " "de C-etendaĵo per ĉapdosieroj en konvena loko)." -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -17310,7 +17239,7 @@ msgstr "" "ĝuste uzas la abstraktajn rimedajn API-ojn interne, interagado kun eksteraj " "komponantoj povas postuli realan surdiskan dosieron." -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -17319,7 +17248,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -17333,18 +17262,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "Historio" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "Februaro 2013: Ĉi tiu specifo estis aprobita per :pep:`427`." -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." @@ -17352,7 +17281,7 @@ msgstr "" "Februaro 2021: La reguloj pri kodŝanĝado en wheel-dosiernomoj estis " "reviziitaj konforme al la fakta konduto de popularaj iloj." -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -17364,7 +17293,7 @@ msgstr "" "simbola ligilo aŭ subdosierujo en tiu dosierujo; tial kondutoj povas " "diferenci inter iloj)." -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " @@ -17373,7 +17302,7 @@ msgstr "" "Decembro 2024: La dosierujo :file:`.dist-info/licenses/` estis specifita " "per :pep:`639`." -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." @@ -17381,11 +17310,15 @@ msgstr "" "Januaro 2025: Klarigis, ke nomo kaj versio devas esti normigitaj por la " "dosierujoj ``.dist-info`` kaj ``.data``." -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "Apendico" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "Ekzempla realigo de urlsafe-base64-nopad::" @@ -18217,11 +18150,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -20462,7 +20395,13 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" @@ -20470,12 +20409,12 @@ msgstr "" "pip, la rekomendata instalilo por Python-pakoj (http://pip.readthedocs.org/" "en/stable/)" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" "La sintaksanaliza biblioteko parsley. (https://pypi.python.org/pypi/parsley/)" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -23071,7 +23010,7 @@ msgid "" msgstr "Jen ekzemplo de kiel legi fluon da arbitraj metadatenaj blokoj." #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "Rekomendoj" @@ -27989,7 +27928,7 @@ msgstr "" "**POVAS** montri tiun tekston al uzanto." #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -28036,7 +27975,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -28318,7 +28257,7 @@ msgstr "" "``nomo``, kies valoro estas signoĉeno de la projekta nomo." #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." @@ -28327,7 +28266,7 @@ msgstr "" "`__." #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "Ekzemple:" @@ -28369,8 +28308,11 @@ msgstr "" "«Ridinda_Piediro» havus la retadreson ``/ridinda-piediro/``." #: ../source/specifications/simple-repository-api.rst:480 +#, fuzzy +#| msgid "" +#| "This URL must respond with a JSON encoded dictionary that has four keys:" msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" "Tiu URL devas respondi per JSON-kodita vortaro enhavanta kvar ŝlosilojn:" @@ -28379,42 +28321,44 @@ msgid "``name``: The normalized name of the project." msgstr "``name``: La normigita nomo de la projekto." #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." -msgstr "``files``: Listo de vortaroj, po unu por individua dosiero." - -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 +#: ../source/specifications/simple-repository-api.rst:494 #, fuzzy #| msgid "The ``versions`` key was added with API version 1.1." -msgid "The ``project-status`` key was added with API version 1.4." +msgid "The ``status`` key was added with API version 1.4." msgstr "La ŝlosilo ``versions`` estis aldonita por versio 1.1 de la API." -#: ../source/specifications/simple-repository-api.rst:500 +#: ../source/specifications/simple-repository-api.rst:496 msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" +#: ../source/specifications/simple-repository-api.rst:501 +#, fuzzy +#| msgid "The ``versions`` key was added with API version 1.1." +msgid "The ``reason`` key was added with API version 1.4." +msgstr "La ŝlosilo ``versions`` estis aldonita por versio 1.1 de la API." + #: ../source/specifications/simple-repository-api.rst:505 #, fuzzy #| msgid "The ``versions`` key was added with API version 1.1." -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "La ŝlosilo ``versions`` estis aldonita por versio 1.1 de la API." #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "``files``: Listo de vortaroj, po unu por individua dosiero." + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " @@ -28424,7 +28368,7 @@ msgstr "" "versiojn alŝutitajn de la projekto. La valoro de ``versions`` estas logika " "aro; tial, ĝi ne povas enhavi duoblaĵon, kaj la ordo de la versioj ne gravas." -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -28436,7 +28380,7 @@ msgstr "" "version sen asociita dosiero (por versio sen âlsutita dosiero, se la servilo " "subtenas tiaĵon)." -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -28445,23 +28389,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "La ŝlosilo ``versions`` estis aldonita por versio 1.1 de la API." -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "Ĉiu individua dosiera vortaro havas la jenajn ŝlosilojn:" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "``filename``: La dosiernomo prezentata." -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "``url``: Retadreso, ĉe kiu oni povas elŝuti la dosieron." -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -28470,7 +28414,7 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " @@ -28480,7 +28424,7 @@ msgstr "" "dosiero. Tamen, estas **REKOMENDEGATE** inkluzivi almenaŭ unu sekuran, " "garantie haveblan haketaĵon." -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -28490,7 +28434,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -28501,7 +28445,7 @@ msgstr "" "metadata-requires-python`. Se ĝi ekzistas, instalilo **IGNORU** la elŝuton " "dum instalado al Python-versio ne plenumanta la postulon." -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " @@ -28511,7 +28455,7 @@ msgstr "" "`, la ŝlosilo ``requires-python`` ne postulas " "specialan kodŝanĝadon alian ol la implicitan kodŝanĝon de JSON." -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -28527,7 +28471,7 @@ msgstr "" "(indikanta, ĉu asociita metadatena dosiero ekzistas) aŭ vortaro, kiu asocias " "nomojn de haketaĵoj al deksesume koditaj haketaĵoj de la metadatenoj." -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " @@ -28536,7 +28480,7 @@ msgstr "" "Se ĉi tiu estas vortaro da haketaĵoj kaj ne bulea valoro, do la postuloj kaj " "rekomendoj por la ŝlosilo ``hashes`` ankaŭ validas por ĉi tiu ŝlosilo." -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " @@ -28546,7 +28490,7 @@ msgstr "" "ŝlosila valoro estas vereca, la metadateno-dosiero ekzistas; se la ŝlosila " "valoro estas malvereca, la metadateno-dosiero mankas." -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." @@ -28554,14 +28498,14 @@ msgstr "" "Estas rekomendate, ke serviloj disponigu la haketaĵojn de la metadateno-" "dosiero, se tio eblas." -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" "``dist-info-metadata``: **Nedeviga**, evitinda sinonimo de ``core-metadata``." -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." @@ -28569,7 +28513,7 @@ msgstr "" "Indekso-kliento **POVAS** uzi tiun ŝlosilon, se ĝi ekzistas, kiel evitindan " "sinonimon de ``core-metadata``." -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." @@ -28577,7 +28521,7 @@ msgstr "" "``dist-info-metadata`` estis normigita per :pep:`658`, kaj ĝia nomo ŝanĝiĝis " "al ``core-metadata`` per :pep:`714`." -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -28586,7 +28530,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -28596,7 +28540,7 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." @@ -28604,11 +28548,11 @@ msgstr "" "``size``: Ŝlosilo, kiu **DEVAS** ekzisti kaj **DEVAS** enhavi entjeron, kiu " "estas la grando de la dosiero en bajtoj." -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "La ŝlosilo ``size`` estis aldonita por versio 1.1 de la API." -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -28620,7 +28564,7 @@ msgstr "" "ttThh:mm:ss.ffffffZ``, kiu prezentas la tempon, kiam la dosiero estis " "alŝutita al la indekso." -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -28634,11 +28578,11 @@ msgstr "" "servilo ne registras alŝutan tempon de dosiero, ĝi **POVAS** preterlasi la " "ŝlosilon ``upload-time``." -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "La ŝlosilo ``upload-time`` estis aldonita por versio 1.1 de la API." -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -28651,11 +28595,11 @@ msgstr "" "kiel ``data-provenance`` en la :ref:`normo pri la baza HTML API `." -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "La kampo ``provenance`` estis aldonita por versio 1.3 de la API." -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -28730,11 +28674,11 @@ msgstr "" "``text/html``, ĉi tiu normo difinas ``text/html`` kiel sinonimon de la " "enhavtipo ``application/vnd.pypi.simple.v1+html`` ." -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "Elektado de Versio kaj Dosierformo" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -28743,7 +28687,7 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" @@ -28761,7 +28705,7 @@ msgstr "" "Dum ĉi tiu specifo ne plene priskribas servilan enhavo-marĉandadon, la fluo " "estas proksimume jena:" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." @@ -28769,7 +28713,7 @@ msgstr "" "La kliento sendas HTTP-peton enhavantan ĉapon ``Accept`` listigantan ĉiujn " "enhavtipojn de la formo versio+formo komprenatajn de la kliento." -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " @@ -28779,7 +28723,7 @@ msgstr "" "kaj liveras respondon de tiu enhavtipo (la manko de ĉapo ``Accept`` estas " "ekvivalenta al ``Accept: */*``)." -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " @@ -28788,7 +28732,7 @@ msgstr "" "Se la servilo ne subtenas iun ajn el la enhavtipoj en la ĉapo ``Accept``, ĝi " "povas elekti inter la jenaj tri opcioj:" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." @@ -28796,7 +28740,7 @@ msgstr "" "Elekti aprioran enhavtipon alian ol tiujn petitajn de la kliento kaj liveri " "tian respondon." -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " @@ -28806,7 +28750,7 @@ msgstr "" "petitaj enhavtipoj estis disponeblaj, kaj la servilo ne volis aŭ ne povis " "elekti aprioran respondan enhavtipon." -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." @@ -28814,7 +28758,7 @@ msgstr "" "Liveri HTTP-respondon ``300 Pluraj Opcioj`` enhavantan liston de ĉiuj eblaj " "respondoj, kiujn la kliento povas elekti." -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." @@ -28822,7 +28766,7 @@ msgstr "" "La kliento interpretas la respondon, pritraktante tiujn diversajn specojn de " "respondoj, kiujn la servilo eble sendis." -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -28830,7 +28774,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -28841,7 +28785,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -28850,7 +28794,7 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " @@ -28860,19 +28804,19 @@ msgstr "" "pritrakteblaj de la kliento. Ĝu subtenas tri malsamjn formojn por ĉiu " "pripetata enhavtipo:" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "``$tipo/$subtipo``" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "``$tipo/*``" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "``*/*``" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " @@ -28882,7 +28826,7 @@ msgstr "" "$subtipo``, ĉar tio estas la sola maniero specifi la deziratajn version kaj " "dosierformon." -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -28892,7 +28836,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -28902,7 +28846,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -28912,7 +28856,7 @@ msgstr "" "Tamen, kliento memoru, ke servilo rajtas elekti **ajnan* el la petitaj " "enhavtipoj, malgraŭ la donitaj prioritatoj, kaj eĉ enhavtipon **ne** petitan." -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -28929,11 +28873,11 @@ msgstr "" "cf3696a81b341925f82f20cb527e656176987565/src/pip/_internal/index/" "collector.py#L123-L150>`_. Tial la risko de reala rompo estas malgranda." -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "Jen ekzemplo de funkciado de kliento:" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " @@ -28942,11 +28886,11 @@ msgstr "" "Se kliento volus nur subteni HTML aŭ JSON, do ĝi simple forigus nevolatan " "enhavtipon el la ĉapo ``Accept``, tiel ke ricevi tion estus erare." -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "Alternativaj Marĉandaj Meĥanismoj" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -28955,11 +28899,11 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "URL-Parametro" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " @@ -28968,7 +28912,7 @@ msgstr "" "Servilo realiganta la Simplan API povas eble subteni retadresan parametron " "nomitan ``format`` por peti specifan version de la retadreso." -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " @@ -28977,7 +28921,7 @@ msgstr "" "La valoro de la parametro ``format`` estu **unu** el la validaj enhavtipoj. " "Ne subtenataj estas pluraj enhavtipoj, ĵokero, kvalito-valoro ktp." -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -28989,7 +28933,7 @@ msgstr "" "esplorado de la API en TTT-legilo aŭ por permesi hiperligon al specifa " "versio kaj formo en dokumentaro aŭ notoj." -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." @@ -28997,7 +28941,7 @@ msgstr "" "Servilo ne subtenanta tiun parametron povas raporti eraron se ĝi ĉeestas aŭ " "simple ignori ĝin." -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -29007,11 +28951,11 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "Agordado de Finpunkto" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " @@ -29021,7 +28965,7 @@ msgstr "" "uzadon de enhavo-marĉandado, permesante al servilo elekti sian aprioraĵon el " "la haveblaj enhavtipoj." -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -29031,7 +28975,7 @@ msgstr "" "Se servilo ne volas aŭ ne povas subteni la servila enhavomarĉandado kaj " "volas postuli, ke uzanto eksplicu la deziratan version, tio estas permesata." -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -29047,7 +28991,7 @@ msgstr "" "petas uzante la ĉapon ``Accept``, la servilo povas ignori tion kaj liveri la " "enhavtipon por la finpunkto." -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -29058,7 +29002,7 @@ msgstr "" "dosierformon de specifita deponeja retadreso, kaj (dum sendado de peto al " "tiu servilo) sendi ĉapon ``Accept`` *nur* inkluzivantan la ĝustan enhavtipon." -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -29069,7 +29013,7 @@ msgstr "" "tiun normon laŭ la opinioj de la aŭtoroj. Ĝi **ne** devige postulas tiajn " "decidojn." -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -29078,11 +29022,11 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "Ni rekomendas, ke serviloj faru la jenon:" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " @@ -29092,7 +29036,7 @@ msgstr "" "marĉandadon, por tiel longe kiel oni racie povas, aŭ minimume tiel longe " "kiel oni ricevas iom da trafiko uzanta la HTML-respondojn." -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -29103,7 +29047,7 @@ msgstr "" "dosiertipon, ĝi ne liveru respondon ``300 Multiple Choice``; anstataŭe ĝi " "liveru respondon ``406 Not Acceptable``." -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." @@ -29111,7 +29055,7 @@ msgstr "" "Tamen, se oni elektas uzi la finpunktan agordon, oni prefere liveru " "respondon ``200 OK`` en la atendata enhavtipo de tiu finpunkto." -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -29120,11 +29064,11 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "Ni rekomendas, ke klientoj faru la jenon:" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." @@ -29132,14 +29076,14 @@ msgstr "" "Subtenu ĉiujn 3 enhavtipojn priskribitajn en ĉi tiu specifo, per servila " "enhavo-marĉandado, tiel longe kiel racie eblas." -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" "Dum konstruado de ĉapo ``Accept``, inkluzivu ĉiujn enhavtipojn subtenatajn." -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -29148,7 +29092,7 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " @@ -29158,7 +29102,7 @@ msgstr "" "valoron ``;q=0.01`` sur la malnova enhavtipo ``text/html``, krom se tiu " "estas la sola enhavtipo, kiun vi petas." -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." @@ -29166,7 +29110,7 @@ msgstr "" "Eksplicite elektu la version serĉatan, anstataŭ uzi la metadatenan version " "``latest``, dum ordinara funkciado." -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." @@ -29174,19 +29118,19 @@ msgstr "" "Kontrolu la ``Content-Type`` de la respondo, kaj certigu, ke ĝi kongruas kun " "io atendata de vi." -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "Septembro 2015: unua versio de la HTML-formo, en :pep:`503`" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "Julio 2016: Metadateno Requires-Python, en ĝisdatigo al :pep:`503`" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "Majo 2019: Subteno de «fortiro», en :pep:`592`" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" @@ -29194,14 +29138,14 @@ msgstr "" "Julio 2020: Versia konvencio de API kaj metadatenoj, kaj deklaro de la HTML-" "formo kiel versio 1 de la API, en :pep:`629`" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" "Majo 2021: provizi pakajn metadatenojn sendepende de pako, laŭ :pep:`658`" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" @@ -29209,7 +29153,7 @@ msgstr "" "Majo 2022: komenca versio de la JSON-formo, kun meĥanismo por kliento elekti " "inter ili, kaj deklaro de ambaŭ formoj kiel versio 1 de la API, en :pep:`691`" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" @@ -29217,7 +29161,7 @@ msgstr "" "Oktobro 2022: projekta versio kaj dosiera grando kaj alŝuta tempo en la " "formo JSON laŭ :pep:`700`" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" @@ -29225,7 +29169,7 @@ msgstr "" "Junio 2023: ŝanĝi la nomon de la kampo provizantan pakajn metadatenojn " "sendepende de pako laŭ :pep:`714`" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" @@ -29233,7 +29177,7 @@ msgstr "" "Novembro 2024: originpruvaj metadatenoj en la formoj HTML kaj JSON, " "en :pep:`740`" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 #, fuzzy #| msgid "" #| "November 2024: provenance metadata in the HTML and JSON formats, " @@ -29244,7 +29188,7 @@ msgstr "" "Novembro 2024: originpruvaj metadatenoj en la formoj HTML kaj JSON, " "en :pep:`740`" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -31251,11 +31195,13 @@ msgstr "Arbitra egaleco" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -31264,12 +31210,12 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "Ekzemplo estas ``===foobar``, kiu kongruas kun la versio ``foobar``." -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " @@ -31279,7 +31225,7 @@ msgstr "" "de projekto, kiel ``===1.0```, kiu ne kongruus kun versio " "``1.0+downstream1``." -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." @@ -31287,11 +31233,11 @@ msgstr "" "Uzado de tiu operatoro estas evitindega, kaj ilo POVAS averti, kiam ĝi estas " "uzita." -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "Pritraktado de antaŭeldonoj" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -31299,15 +31245,15 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "Implicite, dependecsolviloj FARU la jenon:" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "akcepti jam instalitajn antaŭeldonojn por ĉiuj versispecifiloj" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" @@ -31315,11 +31261,11 @@ msgstr "" "akcepti fore disponeblajn antaŭeldonojn por versispecifiloj, kiam mankas " "finan eldonon aŭ posteldonon plenumantan la versispecifilon" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "malakcepti ĉiujn aliajn antaŭeldonojn" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." @@ -31327,7 +31273,7 @@ msgstr "" "Dependeco-solvilo POVAS averti, se antaŭeldono necesas por plenumi versio-" "specifilon." -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" @@ -31335,11 +31281,11 @@ msgstr "" "Dependeco-solviloj ankaŭ PERMESU uzantojn peti la jenajn alternativajn " "kondutojn:" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "akcepti antaŭeldonojn por ĉiuj versispecifiloj" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " @@ -31349,7 +31295,7 @@ msgstr "" "averton, se antaŭeldono jam estas instalita loke, aŭ se antaŭeldono estas la " "nura maniero plenumi iun specifilon)" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." @@ -31357,7 +31303,7 @@ msgstr "" "Dependeco-solvilo ankaŭ POVAS permesi regadon de la ĉi-supra konduto por " "specifaj distribuoj." -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." @@ -31366,20 +31312,20 @@ msgstr "" "specifilo – ili estas ĉiam inkluzivitaj, se ili ne estas eksplicite " "ekskluzivitaj." -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "``~=3.1``: versio 3.1 aŭ pli nova, sed ne versio 4.0 nek pli nova." -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" "``~=3.1.2``: versio 3.1.2 aŭ pli nova, sed ne versio 3.2.0 nek pli nova." -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "``~=3.1a1``: versio 3.1a1 aŭ pli nova, sed ne versio 4.0 nek pli nova." -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." @@ -31388,7 +31334,7 @@ msgstr "" "antaŭeldonojn, posteldonojn, evoluajn eldonojn kaj ajnajn riparajn eldonojn " "3.1.x." -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." @@ -31396,7 +31342,7 @@ msgstr "" "``== 3.1.*``: ajna versio komenciĝanta per 3.1. Ekvivalenta al la kongrua-" "versia kondiĉo ``~=3.1.0``." -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." @@ -31404,11 +31350,11 @@ msgstr "" "``~=3.1.0, != 3.1.3``: versio 3.1.0 aŭ pli nova, sed ne versio 3.1.3, nek " "versio 3.2.0, nek pli nova." -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "Rektaj referencoj" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " @@ -31418,7 +31364,7 @@ msgstr "" "specifilo. Rekta referenco konsistas el la specifilo ``@`` kaj eksplicita " "retadreso." -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -31429,7 +31375,7 @@ msgstr "" "specifilo. Aŭtomata ilo almenaŭ AVERTU pri tio kaj POVAS malakcepti tion, " "kiam rekta referenco estis uzita maltaŭge." -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " @@ -31439,7 +31385,7 @@ msgstr "" "distribuo. Rekta referenco estas por integriloj de programoj, ne por " "eldonantoj." -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " @@ -31449,15 +31395,15 @@ msgstr "" "distribuon aŭ duuman arĥivon wheel. La permesataj formoj de subtenataj " "retadresoj kaj celoj dpeendas de la ilo." -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "Ekzemple, oni povas rekte referenci lokan fontan arĥivon::" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "Alternative, oni povas referenci antaŭkonstruitan arĥivon::" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -31476,7 +31422,7 @@ msgstr "" "minimume AVERTU kaj POVAS rifuzi dependi de la URL. Se rekta referenco ankaŭ " "uzas nesekuran transporton, aŭtomata ilo NE DEPENDU de la URL." -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -31489,7 +31435,7 @@ msgstr "" "norma biblioteko. Aktuale, tiaj haketaĵoj estas ``'md5'``, ``'sha1'``, " "``'sha224'``, ``'sha256'``, ``'sha384'`` kaj ``'sha512'``." -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " @@ -31499,7 +31445,7 @@ msgstr "" "haketaĵan valoron inkluzivante eron ``=`` kiel parton de la URL-fragmento." -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -31508,7 +31454,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -31520,7 +31466,7 @@ msgstr "" "fino de la retadreso laŭ la notacio ``@`` aŭ " "``@#``." -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -31537,15 +31483,15 @@ msgstr "" "inkluzivu haketaĵon por malhelpi falsadon (estas facile krei fideponejon kun " "iu deponejo; estas malpli facile krei fideponejon kun specifa *haketaĵo*)." -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "Ekzemploj de foraj retadresoj::" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "Dosieraj retadresoj" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -31557,7 +31503,7 @@ msgstr "" "```` mankas, la tria suprenstreko DEVAS tamen ekzisti. La " "```` difinas la dosierlokan vojon ĉe la dosiersistemo atingota." -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -31569,7 +31515,7 @@ msgstr "" "nomregno (FQDN), kiu egalas la gastiganton de la aktuala maŝino. Alivorte, " "sur Unikso, la skemo ``file://`` nur povas atingi vojojn ĉe la loka maŝino." -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -31589,11 +31535,11 @@ msgstr "" "web.archive.org/web/20130321051043/http://blogs.msdn.com/b/ie/archive/" "2006/12/06/file-uris-in-windows.aspx>`_." -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "Resumo pri diferencoj de pkg_resources.parse_version" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " @@ -31603,7 +31549,7 @@ msgstr "" "estis verkita. Post la aprobo de la PEP, setuptools 6.0 kaj postaj versioj " "adoptis la konduton priskribitan ĉi tie." -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " @@ -31613,7 +31559,7 @@ msgstr "" "versio estu pli granda ol la sama versio sen loka versio, dum " "``pkg_resources.parse_version`` konsideras ĝin kiel markon de antaŭeldono." -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " @@ -31622,7 +31568,7 @@ msgstr "" "Ĉiu tiu specifo intence restriktas la sintakson de valida versio, dum " "``pkg_resources.parse_version`` provas analizi *iun ajn* signoĉenon." -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " @@ -31632,11 +31578,11 @@ msgstr "" "``1.0.dev1.post1.dev5``. Ĉi tiu specifo, tamen, nur permesas nur unu uzon de " "ĉiu tipo, en difinita ordo." -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "Apendico: Sintaksanalizi versian tekston per regulaj esprimoj" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -31645,7 +31591,7 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" @@ -31653,7 +31599,7 @@ msgstr "" "Por kontroli, ĉu versia identigilo estas en la kanona formo, oni povas uzi " "la jenan funkcion:" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_):" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "Aŭgusto 2014: Ĉi tiu specifo estis aprobita per :pep:`440`." -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "Virtualaj Python-Medioj" @@ -33418,9 +33368,13 @@ msgid "" msgstr "" #: ../source/tutorials/packaging-projects.rst:222 +#, fuzzy +#| msgid "" +#| "``license`` is the :term:`SPDX license expression ` " +#| "of your package." msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" "``license`` estas la :term:`SPDX-esprimo ` de via pako." @@ -33469,12 +33423,21 @@ msgid "Creating a LICENSE" msgstr "Krei la dosieron LICENSE" #: ../source/tutorials/packaging-projects.rst:253 -msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +#, fuzzy +#| msgid "" +#| "It's important for every package uploaded to the Python Package Index to " +#| "include a license. This tells users who install your package the terms " +#| "under which they can use your package. For help picking a license, see " +#| "https://choosealicense.com/. Once you have chosen a license, " +#| "open :file:`LICENSE` and enter the license text. For example, if you had " +#| "chosen the MIT license:" +msgid "" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" "Gravas, ke ĉiu pako alŝutita al la Python-Pakindekso inkluzivu licencon. Tio " "sciigas al uzanto instalinta pakon la kondiĉojn, sub kiuj oni povas uzi la " @@ -33816,6 +33779,160 @@ msgstr "" "komencanto pri Python-pakado, recomendate estas nur uzi *ordinarajn pakojn* " "kaj ``__init__.py`` (eĉ se tiu dosiero estas malplena)." +#, fuzzy +#~| msgid "The ``versions`` key was added with API version 1.1." +#~ msgid "The ``project-status-reason`` key was added with API version 1.4." +#~ msgstr "La ŝlosilo ``versions`` estis aldonita por versio 1.1 de la API." + +#~ msgid "" +#~ "RECORD.jws is used for digital signatures. It is not mentioned in RECORD." +#~ msgstr "" +#~ "RECORD.jws estas uzataj por ciferecaj subskriboj. Ĝi ne estas menciita " +#~ "en RECORD." + +#~ msgid "" +#~ "RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/" +#~ "MIME signatures to secure their wheel files. It is not mentioned in " +#~ "RECORD." +#~ msgstr "" +#~ "RECORD.p7s estas permesata por tiuj, kiuj preferas uzi S/MIME-subskribon " +#~ "por sekurigi wheel-dosieron. Ĝi ne menciiĝas en RECORD." + +#~ msgid "Signed wheel files" +#~ msgstr "Subskribitaj wheel-dosieroj" + +#~ msgid "" +#~ "Wheel files include an extended RECORD that enables digital signatures. " +#~ "PEP 376's RECORD is altered to include a secure hash " +#~ "``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding " +#~ "with no trailing = characters) as the second column instead of an " +#~ "md5sum. All possible entries are hashed, including any generated files " +#~ "such as .pyc files, but not RECORD which cannot contain its own hash. For " +#~ "example::" +#~ msgstr "" +#~ "Wheel-dosiero inkluzivas etenditan ``RECORD`` por ciferecaj subskriboj. " +#~ "La ``RECORD`` de PEP 376 estas modifita por inkluzivi sekuran haketaĵon " +#~ "``digestname=urlsafe_b64encode_nopad(digest)`` (URL-sekura base64-kodado " +#~ "sen finaj signoj ``=``) kiel la duan kolumnon anstataŭ md5sum. Ĉiaj " +#~ "eblaj eroj havu haketaĵojn, inkluzive de generitaj dosieroj kiel ``.pyc``-" +#~ "dosieroj, krom ``RECORD`` mem, kiu ne povas enhavi sian propran " +#~ "haketaĵon. Ekzemple::" + +#~ msgid "" +#~ "The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in " +#~ "RECORD at all since they can only be added after RECORD is generated. " +#~ "Every other file in the archive must have a correct hash in RECORD or the " +#~ "installation will fail." +#~ msgstr "" +#~ "La subskribo-dosiero(j) RECORD.jws kaj RECORD.p7s ne menciiĝas en RECORD, " +#~ "ĉar ili estas nur aldoneblaj post la generado de RECORD. Ĉiu alia dosiero " +#~ "en la arĥivo devas havi ĝustan haketaĵon en RECORD; se ne, la instalado " +#~ "malsukcesos." + +#~ msgid "" +#~ "If JSON web signatures are used, one or more JSON Web Signature JSON " +#~ "Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent " +#~ "to RECORD. JWS is used to sign RECORD by including the SHA-256 hash of " +#~ "RECORD as the signature's JSON payload:" +#~ msgstr "" +#~ "Se oni uzas JSON-retsubskriboj (JWS), unu aŭ pluraj subskriboj uzantaj " +#~ "JSON-seriigon de JSON-retsubskribo (JWS-JS) konserviĝas en dosiero " +#~ "``RECORD.jws`` apud ``RECORD``. Oni uzas JWS por subskribi ``RECORD`` " +#~ "inkluzivante la haketaĵon SHA-256 de ``RECORD`` kiel la JSON-ŝarĝon de la " +#~ "subskribo:" + +#~ msgid "(The hash value is the same format used in RECORD.)" +#~ msgstr "(La haketaĵa valoro estas la sama formo uzata en RECORD.)" + +#~ msgid "" +#~ "If RECORD.p7s is used, it must contain a detached S/MIME format signature " +#~ "of RECORD." +#~ msgstr "" +#~ "Se RECORD.p7s estas uzata, ĝi devas enhavi malligitan S/MIME-forman " +#~ "subskribon de RECORD." + +#~ msgid "" +#~ "A wheel installer is not required to understand digital signatures but " +#~ "MUST verify the hashes in RECORD against the extracted file contents. " +#~ "When the installer checks file hashes against RECORD, a separate " +#~ "signature checker only needs to establish that RECORD matches the " +#~ "signature." +#~ msgstr "" +#~ "Instalilo de wheel ne devas kompreni ciferecan subskribon sed DEVAS " +#~ "kompari la haketaĵojn en ``RECORD`` al la enhavoj de la maldensigitaj " +#~ "dosieroj. Kiam instalilo komparas la dosierajn haketaĵojn kaj ``RECORD``, " +#~ "aparta subskribo-kontrolilo devas nur kontroli, ĉu ``RECORD`` kongruas " +#~ "kun la subskribo." + +#~ msgid "See" +#~ msgstr "Vidu" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7515" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7515" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7517" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7517" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" + +#~ msgid "Why does wheel include attached signatures?" +#~ msgstr "Kial wheel inkluzivas alkroĉitajn subskribojn?" + +#~ msgid "" +#~ "Attached signatures are more convenient than detached signatures because " +#~ "they travel with the archive. Since only the individual files are " +#~ "signed, the archive can be recompressed without invalidating the " +#~ "signature or individual files can be verified without having to download " +#~ "the whole archive." +#~ msgstr "" +#~ "Alkroĉita subskribo estas pli oportuna ol nealkroĉita subskribo, ĉar ĝi " +#~ "moviĝas kune kun la arĥivo. Ĉar nur la individuaj dosieroj estas " +#~ "subskribitaj, la arĥivo estas redensigebla sen eksvalidigi la subskribon, " +#~ "kaj individuaj dosieroj estas kontroleblaj sen reelŝutado de la tuta " +#~ "arĥivo." + +#~ msgid "Why does wheel allow JWS signatures?" +#~ msgstr "Kial wheel permesas JWS-subskribojn?" + +#~ msgid "" +#~ "The JOSE specifications of which JWS is a part are designed to be easy to " +#~ "implement, a feature that is also one of wheel's primary design goals. " +#~ "JWS yields a useful, concise pure-Python implementation." +#~ msgstr "" +#~ "La normoj JOSE, de kiuj JWS estas parto, estas laŭfasone facile " +#~ "realigebla; tio estas ankaŭ unu el la fasonaj ĉefceloj de wheel. JWS " +#~ "ebligas utilan, mallongan pure Python-an realigon." + +#~ msgid "Why does wheel also allow S/MIME signatures?" +#~ msgstr "Kial wheel ankaŭ permesas S/MIME-subskribojn?" + +#~ msgid "" +#~ "S/MIME signatures are allowed for users who need or want to use existing " +#~ "public key infrastructure with wheel." +#~ msgstr "" +#~ "S/MIME-subskribo estas permesata por tiuj uzantoj, kiuj devas aŭ volas " +#~ "uzi ekzistantan publikŝlosilan infrastrukturon kun wheel." + +#~ msgid "" +#~ "Signed packages are only a basic building block in a secure package " +#~ "update system. Wheel only provides the building block." +#~ msgstr "" +#~ "Subskribita pako estas nur baza briko de sekura pako-ĝisdatiga sistemo. " +#~ "Wheel nur provizas la bazan brikon." + +#~ msgid "The license expressions for these projects are:" +#~ msgstr "Jen la licenco-esprimoj por tiuj projektoj:" + #~ msgid "TUF Support - PEP 458" #~ msgstr "Subteno de TUF – PEP 458" diff --git a/locales/es/LC_MESSAGES/messages.po b/locales/es/LC_MESSAGES/messages.po index 63da1b23f..a429dd233 100644 --- a/locales/es/LC_MESSAGES/messages.po +++ b/locales/es/LC_MESSAGES/messages.po @@ -17,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" -"PO-Revision-Date: 2025-05-01 09:08+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" +"PO-Revision-Date: 2025-12-12 01:00+0000\n" "Last-Translator: Joseph Hale \n" "Language-Team: Spanish \n" @@ -27,7 +27,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.12-dev\n" +"X-Generator: Weblate 5.15-dev\n" #: ../source/contribute.rst:5 msgid "Contribute to this guide" @@ -728,7 +728,6 @@ msgid "py2exe" msgstr "" #: ../source/discussions/deploying-python-applications.rst:91 -#, fuzzy msgid "" "`py2exe `__ is a distutils extension which " "allows to build standalone Windows executable programs (32-bit and 64-bit) " @@ -740,14 +739,13 @@ msgid "" "Mozilla Public License 2.0." msgstr "" "`py2exe `__ es una extensión de distutils " -"que permite construir programas ejecutables para Windows independientes (32-" -"bit y 64-bit) desde scripts de Python. Las versiones de Python incluidas en " -"el ciclo de desarrollo oficial son compatibles (se refiere a `Status of " -"Python branches`__). py2exe puede construir ejecutables de consolas y " -"ventanas ejecutables (GUI). Construir servicios de ventana así como " -"servidores DLL/EXE COM puede funcionar pero no tiene soporte activo. La " -"extensión de distutils es publicada bajo la MIT-license y la Mozilla Public " -"License 2.0." +"que permite convertir scripts de Python en programas ejecutables para " +"Windows (32-bit y 64-bit). Las versiones de Python incluidas en el ciclo de " +"desarrollo oficial son compatibles (se refiere a `Status of Python " +"branches`__). py2exe puede construir ejecutables de consolas y ventanas " +"ejecutables (GUI). Construir servicios de ventana así como servidores DLL/" +"EXE COM puede funcionar pero no tiene soporte activo. La extensión de " +"distutils es publicada bajo la MIT-license y la Mozilla Public License 2.0." #: ../source/discussions/deploying-python-applications.rst:103 #: ../source/specifications/platform-compatibility-tags.rst:200 @@ -3753,9 +3751,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3931,54 +3929,54 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3986,11 +3984,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3999,11 +3997,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -4011,27 +4009,27 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "Archivo de requisitos" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 #, fuzzy msgid "Root License Directory" msgstr "Nombre de proyecto" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -4043,38 +4041,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "Archivo Fuente" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -4083,11 +4081,11 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "Paquete de sistema" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." @@ -4095,11 +4093,11 @@ msgstr "" "Un paquete provisto en un formato nativo del sistema operativo, por ejemplo, " "un archivo de RPM o de APT." -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -4108,11 +4106,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "Entorno virtual" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -4120,16 +4118,16 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 #, fuzzy msgid "Wheel Format" msgstr "Formato de archivo" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -4137,22 +4135,22 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 #, fuzzy msgid "Wheel Project" msgstr "Proyecto" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -4307,7 +4305,7 @@ msgstr "Descripción" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "Ejemplos" @@ -4665,7 +4663,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4990,7 +4988,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -7084,11 +7082,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -7127,7 +7126,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -7140,30 +7140,30 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 #, fuzzy msgid "Advanced example" msgstr "Por ejemplo:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -7175,66 +7175,66 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 #, fuzzy msgid "Expression examples" msgstr "Por ejemplo:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -7243,18 +7243,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -7263,11 +7263,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -7277,7 +7277,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -7286,11 +7286,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -7302,24 +7302,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -7327,17 +7327,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -7348,11 +7348,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7360,14 +7360,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -9147,7 +9147,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9765,41 +9765,45 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy msgid "Building distributions" msgstr "Distribución Construida" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9807,25 +9811,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9833,45 +9837,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9882,36 +9886,36 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 #, fuzzy msgid ":ref:`Flit`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 #, fuzzy msgid ":ref:`Hatch`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 #, fuzzy msgid ":ref:`PDM`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 #, fuzzy msgid ":ref:`Pipenv`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 #, fuzzy msgid ":ref:`Poetry`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -10320,7 +10324,7 @@ msgid "``license`` and ``license-files``" msgstr "Dependencias externas" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10427,91 +10431,91 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 #, fuzzy msgid "``license-files``" msgstr "Dependencias externas" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10520,26 +10524,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10547,28 +10551,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10576,33 +10580,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "Ejemplo completo" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13666,90 +13670,86 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 #, fuzzy #| msgid "Project name" msgid "Subdirectory name" msgstr "Nombre de proyecto" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 #, fuzzy msgid "``licenses``" msgstr "Dependencias externas" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 #, fuzzy msgid "``license_files``" msgstr "Dependencias externas" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13758,116 +13758,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13877,51 +13806,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13929,7 +13818,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13937,18 +13826,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13957,7 +13846,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13968,7 +13857,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13986,7 +13875,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13995,7 +13884,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -14009,24 +13898,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -14034,24 +13923,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14825,11 +14718,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16674,17 +16567,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18701,7 +18600,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 #, fuzzy msgid "Recommendations" msgstr "Recomendaciones de herramientas" @@ -22825,7 +22724,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22864,7 +22763,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -23086,14 +22985,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 #, fuzzy msgid "As an example:" msgstr "Por ejemplo:" @@ -23128,7 +23027,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -23136,45 +23035,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -23182,7 +23081,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -23191,23 +23090,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -23216,14 +23115,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -23233,7 +23132,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -23241,14 +23140,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -23258,45 +23157,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -23305,7 +23204,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -23315,17 +23214,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -23333,7 +23232,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -23342,11 +23241,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -23354,11 +23253,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -23422,12 +23321,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 #, fuzzy msgid "Version + Format Selection" msgstr "Versión" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -23436,65 +23335,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23502,7 +23401,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23513,7 +23412,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23522,33 +23421,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23558,7 +23457,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23568,7 +23467,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23576,7 +23475,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23587,22 +23486,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23611,25 +23510,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23637,13 +23536,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23653,19 +23552,19 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 #, fuzzy msgid "Endpoint Configuration" msgstr "Configuraciones habituales" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23673,7 +23572,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23683,7 +23582,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23691,7 +23590,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23699,7 +23598,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23708,18 +23607,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23727,13 +23626,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23742,23 +23641,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23767,79 +23666,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -25414,11 +25313,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -25427,29 +25328,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -25457,101 +25358,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25559,29 +25460,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25593,7 +25494,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25602,14 +25503,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25618,7 +25519,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25626,7 +25527,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25637,16 +25538,16 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 #, fuzzy msgid "Remote URL examples::" msgstr "Por ejemplo::" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25654,7 +25555,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25662,7 +25563,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25674,43 +25575,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25719,29 +25620,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 #, fuzzy msgid "Python Virtual Environments" @@ -27121,7 +27026,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -27160,11 +27065,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/fa/LC_MESSAGES/messages.po b/locales/fa/LC_MESSAGES/messages.po index dc5d2a00c..3c24b463e 100644 --- a/locales/fa/LC_MESSAGES/messages.po +++ b/locales/fa/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2023-02-15 07:52+0000\n" "Last-Translator: Arsalan Dehghani \n" "Language-Team: Persian `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3648,11 +3648,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3661,11 +3661,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3673,26 +3673,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3704,38 +3704,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3744,21 +3744,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3767,11 +3767,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3779,15 +3779,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3795,21 +3795,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3962,7 +3962,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4318,7 +4318,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4644,7 +4644,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6708,11 +6708,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6748,7 +6749,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6761,29 +6763,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6795,65 +6797,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6862,18 +6864,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6882,11 +6884,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6896,7 +6898,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6905,11 +6907,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6921,24 +6923,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6946,17 +6948,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6967,11 +6969,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6979,14 +6981,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8764,7 +8766,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9382,42 +9384,46 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy #| msgid "Reviewing new contributions" msgid "Building distributions" msgstr "بررسی مشارکت‌های جدید" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9425,25 +9431,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9451,45 +9457,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9500,31 +9506,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9928,7 +9934,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10033,90 +10039,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10125,26 +10131,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10152,28 +10158,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10181,33 +10187,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13258,86 +13264,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13346,116 +13348,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13465,51 +13396,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13517,7 +13408,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13525,18 +13416,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13545,7 +13436,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13556,7 +13447,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13574,7 +13465,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13583,7 +13474,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13597,24 +13488,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13622,24 +13513,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14400,11 +14295,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16237,17 +16132,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18257,7 +18158,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22323,7 +22224,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22362,7 +22263,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22583,14 +22484,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22624,7 +22525,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22632,45 +22533,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22678,7 +22579,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22687,23 +22588,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22712,14 +22613,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22729,7 +22630,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22737,14 +22638,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22754,45 +22655,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22801,7 +22702,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22811,17 +22712,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22829,7 +22730,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22838,11 +22739,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22850,11 +22751,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22917,12 +22818,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 #, fuzzy msgid "Version + Format Selection" msgstr "ترجمه‌ها" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22931,65 +22832,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22997,7 +22898,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23008,7 +22909,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23017,33 +22918,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23053,7 +22954,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23063,7 +22964,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23071,7 +22972,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23082,22 +22983,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23106,25 +23007,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23132,13 +23033,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23148,18 +23049,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23167,7 +23068,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23177,7 +23078,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23185,7 +23086,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23193,7 +23094,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23202,18 +23103,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23221,13 +23122,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23236,23 +23137,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23261,79 +23162,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24907,11 +24808,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24920,29 +24823,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24950,101 +24853,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25052,29 +24955,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25086,7 +24989,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25095,14 +24998,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25111,7 +25014,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25119,7 +25022,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25130,15 +25033,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25146,7 +25049,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25154,7 +25057,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25166,43 +25069,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25211,29 +25114,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26601,7 +26508,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26640,11 +26547,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/fil/LC_MESSAGES/messages.po b/locales/fil/LC_MESSAGES/messages.po index 2ba90cead..cd1b18700 100644 --- a/locales/fil/LC_MESSAGES/messages.po +++ b/locales/fil/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2022-11-19 08:28+0000\n" "Last-Translator: RedFurrFox \n" "Language-Team: Filipino `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3641,11 +3641,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3654,11 +3654,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3666,26 +3666,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3697,38 +3697,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3737,21 +3737,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3760,11 +3760,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3772,15 +3772,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3788,21 +3788,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3955,7 +3955,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4311,7 +4311,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4633,7 +4633,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6692,11 +6692,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6732,7 +6733,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6745,29 +6747,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6779,65 +6781,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6846,18 +6848,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6866,11 +6868,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6880,7 +6882,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6889,11 +6891,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6905,24 +6907,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6930,17 +6932,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6951,11 +6953,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6963,14 +6965,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8746,7 +8748,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9362,40 +9364,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9403,25 +9409,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9429,45 +9435,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9478,31 +9484,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9906,7 +9912,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10011,90 +10017,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10103,26 +10109,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10130,28 +10136,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10159,33 +10165,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13236,86 +13242,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13324,116 +13326,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13443,51 +13374,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13495,7 +13386,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13503,18 +13394,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13523,7 +13414,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13534,7 +13425,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13552,7 +13443,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13561,7 +13452,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13575,24 +13466,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13600,24 +13491,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14371,11 +14266,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16207,17 +16102,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18225,7 +18126,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22277,7 +22178,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22316,7 +22217,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22536,14 +22437,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22577,7 +22478,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22585,45 +22486,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22631,7 +22532,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22640,23 +22541,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22665,14 +22566,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22682,7 +22583,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22690,14 +22591,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22707,45 +22608,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22754,7 +22655,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22764,17 +22665,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22782,7 +22683,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22791,11 +22692,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22803,11 +22704,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22870,11 +22771,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22883,65 +22784,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22949,7 +22850,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22960,7 +22861,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22969,33 +22870,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23005,7 +22906,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23015,7 +22916,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23023,7 +22924,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23034,22 +22935,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23058,25 +22959,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23084,13 +22985,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23100,18 +23001,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23119,7 +23020,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23129,7 +23030,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23137,7 +23038,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23145,7 +23046,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23154,18 +23055,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23173,13 +23074,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23188,23 +23089,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23213,79 +23114,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24852,11 +24753,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24865,29 +24768,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24895,101 +24798,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24997,29 +24900,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25031,7 +24934,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25040,14 +24943,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25056,7 +24959,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25064,7 +24967,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25075,15 +24978,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25091,7 +24994,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25099,7 +25002,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25111,43 +25014,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25156,29 +25059,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26544,7 +26451,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26583,11 +26490,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/fr/LC_MESSAGES/messages.po b/locales/fr/LC_MESSAGES/messages.po index d10c537fb..1d389eae3 100644 --- a/locales/fr/LC_MESSAGES/messages.po +++ b/locales/fr/LC_MESSAGES/messages.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) 2013–2020, PyPA # This file is distributed under the same license as the Python Packaging User Guide package. -# Nathan , 2021, 2022. +# Nathan , 2021, 2022, 2026. # Abdur-Rahmaan Janhangeer , 2021. # Matthieu Darbois , 2022. # Rafael Fontenelle , 2024. @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" -"PO-Revision-Date: 2025-02-17 11:31+0000\n" -"Last-Translator: Bruno Alla \n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" +"PO-Revision-Date: 2026-01-20 00:01+0000\n" +"Last-Translator: Nathan \n" "Language-Team: French \n" "Language: fr\n" @@ -22,7 +22,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.10.1-dev\n" +"X-Generator: Weblate 5.16-dev\n" #: ../source/contribute.rst:5 msgid "Contribute to this guide" @@ -53,8 +53,6 @@ msgid "Writing new content" msgstr "Rédiger du nouveau contenu" #: ../source/contribute.rst:14 -#, fuzzy -#| msgid "Translate the guide" msgid "Translating the guide" msgstr "Traduire le guide" @@ -3580,9 +3578,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3758,17 +3756,17 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "Index des Paquets Python (PyPI)" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " @@ -3778,31 +3776,31 @@ msgstr "" "par défaut pour la communauté Python. Il est ouvert à tous les développeurs " "Python pour qu'ils utilisent et distribuent leurs paquets." -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "pypi.org" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "pyproject.toml" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "Version" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." @@ -3810,7 +3808,7 @@ msgstr "" "Une image d'un :term:`Projet` à un certain moment dans le temps, défini par " "un numéro de version." -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3818,11 +3816,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "Dépendance" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3831,11 +3829,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3843,27 +3841,27 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 #, fuzzy msgid "Root License Directory" msgstr "Nom du projet" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3875,38 +3873,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "setup.py" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "setup.cfg" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3915,11 +3913,11 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "Paquet système" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." @@ -3927,11 +3925,11 @@ msgstr "" "Un paquet fourni dans un format natif au système d'exploitation, par ex. un " "fichier rpm ou dpkg." -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3940,11 +3938,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "Environnement virtuel" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3952,15 +3950,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "Wheel" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3968,22 +3966,22 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 #, fuzzy msgid "Wheel Project" msgstr "Projet" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -4136,7 +4134,7 @@ msgstr "Description" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "Exemples" @@ -4512,7 +4510,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "Références" @@ -4838,7 +4836,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6914,11 +6912,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6957,7 +6956,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6970,30 +6970,30 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 #, fuzzy msgid "Advanced example" msgstr "Exemples" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -7005,66 +7005,66 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 #, fuzzy msgid "Expression examples" msgstr "Exemples" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -7073,18 +7073,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -7093,11 +7093,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -7107,7 +7107,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -7116,11 +7116,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -7132,24 +7132,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -7157,17 +7157,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -7178,11 +7178,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7190,14 +7190,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8987,7 +8987,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9605,41 +9605,45 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy msgid "Building distributions" msgstr "Distribution compilée" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9647,25 +9651,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9673,7 +9677,7 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" @@ -9681,39 +9685,39 @@ msgstr "" "Depuis novembre 2024, PyPI supporte les plateformes suivantes comme " "fournisseurs Trusted Publishing :" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "GitLab CI/CD (sur ``https://gitlab.com``)" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9724,31 +9728,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -10158,7 +10162,7 @@ msgid "``license`` and ``license-files``" msgstr "``license``" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10271,14 +10275,14 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 #, fuzzy @@ -10286,71 +10290,71 @@ msgstr "" msgid "``license-files``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "``classifiers``" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 #, fuzzy msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " @@ -10359,7 +10363,7 @@ msgstr "" "Renseignez une liste de classifieurs qui catégorisent votre projet. Pour la " "liste complète, consultez https://pypi.org/classifiers/." -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10368,26 +10372,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10395,28 +10399,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10424,34 +10428,34 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 #, fuzzy msgid "A full example" msgstr "Exemples" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13622,94 +13626,90 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 #, fuzzy #| msgid "Project name" msgid "Subdirectory name" msgstr "Nom du projet" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 #, fuzzy #| msgid "``license``" msgid "``licenses``" msgstr "``license``" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 #, fuzzy #| msgid "``license``" msgid "``license_files``" msgstr "``license``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 #, fuzzy #| msgid "``LIB``" msgid "``LICENSES``" msgstr "``LIB``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13718,119 +13718,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "Voir" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "https://datatracker.ietf.org/doc/html/rfc7515" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "https://datatracker.ietf.org/doc/html/rfc7517" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "Foire aux questions" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13840,51 +13766,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13892,7 +13778,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13900,18 +13786,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13920,7 +13806,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13931,7 +13817,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13949,7 +13835,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13958,7 +13844,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13972,24 +13858,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "Historique" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13997,7 +13883,7 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 #, fuzzy #| msgid "March 2001: Core metadata 1.0 was approved through :pep:`241`." @@ -14008,17 +13894,21 @@ msgstr "" "Mars 2001 : Les métadonnées de base 1.0 ont été approuvées grâce " "au :pep:`241`." -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "Annexe" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14812,11 +14702,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16680,17 +16570,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18712,7 +18608,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22945,7 +22841,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22984,7 +22880,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -23205,14 +23101,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 #, fuzzy msgid "As an example:" msgstr "Exemples" @@ -23247,7 +23143,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -23255,45 +23151,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -23301,7 +23197,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -23310,23 +23206,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -23335,14 +23231,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -23352,7 +23248,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -23360,14 +23256,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -23377,45 +23273,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -23424,7 +23320,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -23434,17 +23330,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -23452,7 +23348,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -23461,11 +23357,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -23473,11 +23369,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -23541,12 +23437,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 #, fuzzy msgid "Version + Format Selection" msgstr "Traductions" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -23555,65 +23451,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23621,7 +23517,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23632,7 +23528,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23641,33 +23537,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23677,7 +23573,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23687,7 +23583,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23695,7 +23591,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23706,22 +23602,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23730,25 +23626,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23756,13 +23652,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23772,18 +23668,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23791,7 +23687,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23801,7 +23697,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23809,7 +23705,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23817,7 +23713,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23826,18 +23722,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23845,13 +23741,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23860,23 +23756,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23885,79 +23781,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -25536,11 +25432,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -25549,29 +25447,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -25579,102 +25477,102 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 #, fuzzy msgid "Direct references" msgstr "Références" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25682,29 +25580,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25716,7 +25614,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25725,14 +25623,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25741,7 +25639,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25749,7 +25647,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25760,16 +25658,16 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 #, fuzzy msgid "Remote URL examples::" msgstr "Exemples" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25777,7 +25675,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25785,7 +25683,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25797,43 +25695,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25842,29 +25740,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 #, fuzzy msgid "Python Virtual Environments" @@ -27237,7 +27139,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -27276,11 +27178,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 @@ -27534,6 +27437,27 @@ msgid "" "the file is empty)." msgstr "" +#~ msgid "See" +#~ msgstr "Voir" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7515" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7515" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7517" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7517" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" + #, fuzzy #~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" #~ msgstr "pyproject.toml" diff --git a/locales/frc/LC_MESSAGES/messages.po b/locales/frc/LC_MESSAGES/messages.po index c964edf0a..3361323cf 100644 --- a/locales/frc/LC_MESSAGES/messages.po +++ b/locales/frc/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -3405,9 +3405,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3580,54 +3580,54 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3635,11 +3635,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3648,11 +3648,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3660,26 +3660,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3691,38 +3691,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3731,21 +3731,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3754,11 +3754,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3766,15 +3766,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3782,21 +3782,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3949,7 +3949,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4305,7 +4305,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4627,7 +4627,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6686,11 +6686,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6726,7 +6727,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6739,29 +6741,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6773,65 +6775,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6840,18 +6842,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6860,11 +6862,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6874,7 +6876,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6883,11 +6885,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6899,24 +6901,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6924,17 +6926,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6945,11 +6947,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6957,14 +6959,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8740,7 +8742,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9356,40 +9358,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9397,25 +9403,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9423,45 +9429,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9472,31 +9478,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9900,7 +9906,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10005,90 +10011,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10097,26 +10103,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10124,28 +10130,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10153,33 +10159,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13230,86 +13236,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13318,116 +13320,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13437,51 +13368,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13489,7 +13380,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13497,18 +13388,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13517,7 +13408,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13528,7 +13419,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13546,7 +13437,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13555,7 +13446,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13569,24 +13460,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13594,24 +13485,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14365,11 +14260,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16201,17 +16096,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18219,7 +18120,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22271,7 +22172,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22310,7 +22211,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22530,14 +22431,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22571,7 +22472,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22579,45 +22480,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22625,7 +22526,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22634,23 +22535,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22659,14 +22560,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22676,7 +22577,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22684,14 +22585,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22701,45 +22602,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22748,7 +22649,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22758,17 +22659,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22776,7 +22677,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22785,11 +22686,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22797,11 +22698,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22864,11 +22765,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22877,65 +22778,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22943,7 +22844,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22954,7 +22855,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22963,33 +22864,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -22999,7 +22900,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23009,7 +22910,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23017,7 +22918,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23028,22 +22929,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23052,25 +22953,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23078,13 +22979,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23094,18 +22995,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23113,7 +23014,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23123,7 +23024,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23131,7 +23032,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23139,7 +23040,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23148,18 +23049,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23167,13 +23068,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23182,23 +23083,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23207,79 +23108,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24846,11 +24747,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24859,29 +24762,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24889,101 +24792,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24991,29 +24894,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25025,7 +24928,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25034,14 +24937,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25050,7 +24953,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25058,7 +24961,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25069,15 +24972,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25085,7 +24988,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25093,7 +24996,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25105,43 +25008,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25150,29 +25053,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26538,7 +26445,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26577,11 +26484,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/gl/LC_MESSAGES/messages.po b/locales/gl/LC_MESSAGES/messages.po index 8baf0c4d1..f9f6ab4c9 100644 --- a/locales/gl/LC_MESSAGES/messages.po +++ b/locales/gl/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -3405,9 +3405,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3580,54 +3580,54 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3635,11 +3635,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3648,11 +3648,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3660,26 +3660,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3691,38 +3691,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3731,21 +3731,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3754,11 +3754,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3766,15 +3766,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3782,21 +3782,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3949,7 +3949,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4305,7 +4305,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4627,7 +4627,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6686,11 +6686,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6726,7 +6727,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6739,29 +6741,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6773,65 +6775,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6840,18 +6842,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6860,11 +6862,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6874,7 +6876,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6883,11 +6885,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6899,24 +6901,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6924,17 +6926,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6945,11 +6947,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6957,14 +6959,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8740,7 +8742,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9356,40 +9358,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9397,25 +9403,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9423,45 +9429,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9472,31 +9478,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9900,7 +9906,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10005,90 +10011,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10097,26 +10103,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10124,28 +10130,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10153,33 +10159,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13230,86 +13236,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13318,116 +13320,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13437,51 +13368,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13489,7 +13380,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13497,18 +13388,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13517,7 +13408,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13528,7 +13419,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13546,7 +13437,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13555,7 +13446,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13569,24 +13460,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13594,24 +13485,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14365,11 +14260,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16201,17 +16096,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18219,7 +18120,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22271,7 +22172,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22310,7 +22211,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22530,14 +22431,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22571,7 +22472,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22579,45 +22480,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22625,7 +22526,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22634,23 +22535,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22659,14 +22560,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22676,7 +22577,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22684,14 +22585,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22701,45 +22602,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22748,7 +22649,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22758,17 +22659,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22776,7 +22677,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22785,11 +22686,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22797,11 +22698,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22864,11 +22765,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22877,65 +22778,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22943,7 +22844,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22954,7 +22855,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22963,33 +22864,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -22999,7 +22900,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23009,7 +22910,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23017,7 +22918,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23028,22 +22929,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23052,25 +22953,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23078,13 +22979,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23094,18 +22995,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23113,7 +23014,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23123,7 +23024,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23131,7 +23032,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23139,7 +23040,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23148,18 +23049,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23167,13 +23068,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23182,23 +23083,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23207,79 +23108,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24846,11 +24747,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24859,29 +24762,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24889,101 +24792,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24991,29 +24894,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25025,7 +24928,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25034,14 +24937,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25050,7 +24953,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25058,7 +24961,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25069,15 +24972,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25085,7 +24988,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25093,7 +24996,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25105,43 +25008,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25150,29 +25053,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26538,7 +26445,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26577,11 +26484,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/gmh/LC_MESSAGES/messages.po b/locales/gmh/LC_MESSAGES/messages.po index 2b3760480..4fbefe275 100644 --- a/locales/gmh/LC_MESSAGES/messages.po +++ b/locales/gmh/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -3405,9 +3405,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3580,54 +3580,54 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3635,11 +3635,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3648,11 +3648,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3660,26 +3660,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3691,38 +3691,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3731,21 +3731,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3754,11 +3754,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3766,15 +3766,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3782,21 +3782,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3949,7 +3949,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4305,7 +4305,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4627,7 +4627,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6686,11 +6686,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6726,7 +6727,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6739,29 +6741,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6773,65 +6775,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6840,18 +6842,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6860,11 +6862,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6874,7 +6876,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6883,11 +6885,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6899,24 +6901,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6924,17 +6926,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6945,11 +6947,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6957,14 +6959,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8740,7 +8742,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9356,40 +9358,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9397,25 +9403,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9423,45 +9429,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9472,31 +9478,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9900,7 +9906,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10005,90 +10011,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10097,26 +10103,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10124,28 +10130,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10153,33 +10159,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13230,86 +13236,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13318,116 +13320,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13437,51 +13368,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13489,7 +13380,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13497,18 +13388,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13517,7 +13408,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13528,7 +13419,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13546,7 +13437,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13555,7 +13446,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13569,24 +13460,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13594,24 +13485,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14365,11 +14260,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16201,17 +16096,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18219,7 +18120,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22271,7 +22172,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22310,7 +22211,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22530,14 +22431,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22571,7 +22472,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22579,45 +22480,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22625,7 +22526,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22634,23 +22535,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22659,14 +22560,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22676,7 +22577,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22684,14 +22585,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22701,45 +22602,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22748,7 +22649,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22758,17 +22659,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22776,7 +22677,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22785,11 +22686,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22797,11 +22698,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22864,11 +22765,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22877,65 +22778,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22943,7 +22844,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22954,7 +22855,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22963,33 +22864,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -22999,7 +22900,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23009,7 +22910,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23017,7 +22918,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23028,22 +22929,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23052,25 +22953,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23078,13 +22979,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23094,18 +22995,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23113,7 +23014,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23123,7 +23024,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23131,7 +23032,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23139,7 +23040,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23148,18 +23049,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23167,13 +23068,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23182,23 +23083,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23207,79 +23108,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24846,11 +24747,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24859,29 +24762,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24889,101 +24792,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24991,29 +24894,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25025,7 +24928,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25034,14 +24937,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25050,7 +24953,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25058,7 +24961,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25069,15 +24972,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25085,7 +24988,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25093,7 +24996,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25105,43 +25008,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25150,29 +25053,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26538,7 +26445,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26577,11 +26484,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/hi/LC_MESSAGES/messages.po b/locales/hi/LC_MESSAGES/messages.po index 9e274ef5f..46b709418 100644 --- a/locales/hi/LC_MESSAGES/messages.po +++ b/locales/hi/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2024-09-16 10:09+0000\n" "Last-Translator: kumar Shivam \n" "Language-Team: Hindi `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3661,11 +3661,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3674,11 +3674,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3686,28 +3686,28 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 #, fuzzy #| msgid "Project name" msgid "Root License Directory" msgstr "परियोजना" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3719,38 +3719,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3759,21 +3759,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3782,11 +3782,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3794,15 +3794,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3810,21 +3810,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3977,7 +3977,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4333,7 +4333,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4661,7 +4661,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6740,11 +6740,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6780,7 +6781,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6793,29 +6795,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6827,65 +6829,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6894,18 +6896,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6914,11 +6916,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6928,7 +6930,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6937,11 +6939,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6953,24 +6955,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6978,17 +6980,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6999,11 +7001,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7011,14 +7013,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8796,7 +8798,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9414,40 +9416,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9455,25 +9461,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9481,45 +9487,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9530,31 +9536,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9958,7 +9964,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10063,90 +10069,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10155,26 +10161,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10182,28 +10188,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10211,33 +10217,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13288,88 +13294,84 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 #, fuzzy #| msgid "Project name" msgid "Subdirectory name" msgstr "परियोजना" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13378,116 +13380,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13497,51 +13428,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13549,7 +13440,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13557,18 +13448,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13577,7 +13468,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13588,7 +13479,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13606,7 +13497,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13615,7 +13506,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13629,24 +13520,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13654,24 +13545,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14427,11 +14322,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16268,17 +16163,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18290,7 +18191,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22360,7 +22261,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22399,7 +22300,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22619,14 +22520,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22660,7 +22561,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22668,45 +22569,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22714,7 +22615,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22723,23 +22624,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22748,14 +22649,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22765,7 +22666,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22773,14 +22674,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22790,45 +22691,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22837,7 +22738,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22847,17 +22748,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22865,7 +22766,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22874,11 +22775,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22886,11 +22787,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22953,11 +22854,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22966,65 +22867,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23032,7 +22933,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23043,7 +22944,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23052,33 +22953,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23088,7 +22989,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23098,7 +22999,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23106,7 +23007,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23117,22 +23018,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23141,25 +23042,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23167,13 +23068,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23183,18 +23084,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23202,7 +23103,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23212,7 +23113,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23220,7 +23121,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23228,7 +23129,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23237,18 +23138,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23256,13 +23157,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23271,23 +23172,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23296,79 +23197,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24935,11 +24836,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24948,29 +24851,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24978,101 +24881,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25080,29 +24983,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25114,7 +25017,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25123,14 +25026,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25139,7 +25042,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25147,7 +25050,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25158,15 +25061,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25174,7 +25077,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25182,7 +25085,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25194,43 +25097,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25239,29 +25142,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26629,7 +26536,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26668,11 +26575,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/id/LC_MESSAGES/messages.po b/locales/id/LC_MESSAGES/messages.po index 5e84b0eb4..53df70e0d 100644 --- a/locales/id/LC_MESSAGES/messages.po +++ b/locales/id/LC_MESSAGES/messages.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2024-10-17 21:16+0000\n" "Last-Translator: oon arfiandwi \n" "Language-Team: Indonesian `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3684,11 +3684,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3697,11 +3697,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3709,26 +3709,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3740,38 +3740,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3780,21 +3780,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3803,11 +3803,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3815,15 +3815,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3831,21 +3831,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3998,7 +3998,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4354,7 +4354,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4680,7 +4680,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6744,11 +6744,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6784,7 +6785,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6797,29 +6799,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6831,65 +6833,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6898,18 +6900,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6918,11 +6920,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6932,7 +6934,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6941,11 +6943,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6957,24 +6959,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6982,17 +6984,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -7003,11 +7005,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7015,14 +7017,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8800,7 +8802,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9418,42 +9420,46 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy #| msgid "Reviewing new contributions" msgid "Building distributions" msgstr "Tinjau kontribusi baru" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9461,25 +9467,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9487,45 +9493,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9536,31 +9542,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9964,7 +9970,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10069,90 +10075,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10161,26 +10167,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10188,28 +10194,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10217,33 +10223,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13294,86 +13300,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13382,116 +13384,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13501,51 +13432,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13553,7 +13444,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13561,18 +13452,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13581,7 +13472,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13592,7 +13483,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13610,7 +13501,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13619,7 +13510,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13633,24 +13524,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13658,24 +13549,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14434,11 +14329,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16273,17 +16168,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18297,7 +18198,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22363,7 +22264,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22402,7 +22303,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22623,14 +22524,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22664,7 +22565,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22672,45 +22573,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22718,7 +22619,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22727,23 +22628,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22752,14 +22653,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22769,7 +22670,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22777,14 +22678,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22794,45 +22695,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22841,7 +22742,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22851,17 +22752,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22869,7 +22770,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22878,11 +22779,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22890,11 +22791,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22957,12 +22858,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 #, fuzzy msgid "Version + Format Selection" msgstr "Penerjemahan" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22971,65 +22872,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23037,7 +22938,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23048,7 +22949,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23057,33 +22958,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23093,7 +22994,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23103,7 +23004,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23111,7 +23012,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23122,22 +23023,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23146,25 +23047,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23172,13 +23073,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23188,18 +23089,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23207,7 +23108,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23217,7 +23118,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23225,7 +23126,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23233,7 +23134,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23242,18 +23143,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23261,13 +23162,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23276,23 +23177,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23301,79 +23202,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24947,11 +24848,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24960,29 +24863,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24990,101 +24893,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25092,29 +24995,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25126,7 +25029,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25135,14 +25038,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25151,7 +25054,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25159,7 +25062,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25170,15 +25073,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25186,7 +25089,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25194,7 +25097,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25206,43 +25109,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25251,29 +25154,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26641,7 +26548,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26680,11 +26587,12 @@ msgstr "Membuat sebuah LICENSE" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/ja/LC_MESSAGES/messages.po b/locales/ja/LC_MESSAGES/messages.po index bfb23950d..167f57c81 100644 --- a/locales/ja/LC_MESSAGES/messages.po +++ b/locales/ja/LC_MESSAGES/messages.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) 2013–2020, PyPA # This file is distributed under the same license as the Python Packaging User Guide package. -# moto kawasaki , 2021, 2022, 2023, 2024, 2025. +# moto kawasaki , 2021, 2022, 2023, 2024, 2025, 2026. # tsutsu3 , 2023. # nikkie , 2023. # Rafael Fontenelle , 2024. @@ -12,17 +12,17 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" -"PO-Revision-Date: 2025-11-25 09:00+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" +"PO-Revision-Date: 2026-02-05 03:01+0000\n" "Last-Translator: moto kawasaki \n" -"Language-Team: Japanese \n" +"Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.15-dev\n" +"X-Generator: Weblate 5.16-dev\n" #: ../source/contribute.rst:5 msgid "Contribute to this guide" @@ -61,19 +61,18 @@ msgid "" "`pull requests`__. If you're planning to write or edit the guide, please " "read the :ref:`style guide `." msgstr "" -"|PyPUG| のほとんどの作業は `プロジェクトのGitHubリポジトリ `__ で行われます。手始めに `未解決の問題 `__ のリスト" -"をチェックアウトして(改善策の) `プルリクエスト `__ を送ってく" -"ださい。もしあなたがこのガイドに何かを書き加えたり編集したりするつもりな" -"ら、:ref:`スタイルガイド `__ を読みましょう。" +"|PyPUG| のほとんどの作業は `project's GitHub repository`__ で行われます。手始" +"めに `open issues`__ のリストをチェックアウトして `pull requests`__ を送って" +"ください。もしあなたがこのガイドに何かを書き加えたり編集したりするつもりな" +"ら、 :ref:`スタイルガイド ` を読みましょう。" #: ../source/contribute.rst:25 msgid "" "By contributing to the |PyPUG|, you're expected to follow the PSF's `Code of " "Conduct`__." msgstr "" -"|PyPUG|に貢献を行うのであれば、あなたがPSFの `行動規範 `__ " -"に従うことが期待されています。" +"|PyPUG| に貢献を行うことによって、あなたがPSFの `Code of Conduct`__ に従うこ" +"とが期待されています。" #: ../source/contribute.rst:32 msgid "Documentation types" @@ -87,9 +86,9 @@ msgid "" "pick the appropriate documentation type." msgstr "" "本プロジェクトは、特定の目的に合わせた四つの別個の文書類型で成り立っていま" -"す。本プロジェクトでは、文書化の品質向上のために `ディアタクシスプロセス " -"` に従うことを強く希望します。新たに追加することを提案する" -"場合には、いずれかの適切な文書類型を選択してください。" +"す。本プロジェクトでは、文書化の品質向上のために `Diátaxis process`_ に従うこ" +"とを強く希望します。新たに追加することを提案する場合には、いずれかの適切な文" +"書類型を選択してください。" #: ../source/contribute.rst:42 ../source/index.rst:55 #: ../source/tutorials/index.rst:2 @@ -104,8 +103,8 @@ msgid "" msgstr "" "チュートリアルは目標を達成することで読者に新しい概念を教えることに注力してい" "ます。こうするべきだという意見に従ったステップバイステップのガイドになってい" -"ます。大筋に無関係な警告や情報は省略されています。`チュートリアル型文書の例 " -"`_." +"ます。大筋に無関係な警告や情報は省略されています。 `example tutorial-style " +"document`_ 。" #: ../source/contribute.rst:51 ../source/guides/index.rst:2 #: ../source/index.rst:69 @@ -167,7 +166,7 @@ msgid "" "`packaging.python.org`_ project on Weblate to contribute." msgstr "" "我々は本プロジェクトの翻訳を管理するために `Weblate`_ を使用しています。 翻訳" -"で貢献するには、Weblate上の`packaging.python.org`_ プロジェクトをご覧くださ" +"で貢献するには、Weblate上の `packaging.python.org`_ プロジェクトをご覧くださ" "い。" #: ../source/contribute.rst:80 @@ -181,8 +180,8 @@ msgstr "" msgid "" "Any translations of this project should follow `reStructuredText syntax`_." msgstr "" -"本プロジェクトの翻訳はすべて、 `reStructuredText 文法 `_ に従わなければなりません。" +"本プロジェクトの翻訳はすべて、 `reStructuredText syntax`_ に従わなければなり" +"ません。" #: ../source/contribute.rst:93 msgid "Adding a language" @@ -209,7 +208,7 @@ msgid "" "`this guide`_ before translating on Weblate." msgstr "" "もしあなたがreStructuredText(RST)の書き方に慣れていないのであれば、Weblateで" -"翻訳作業をする前に `このガイド `_ を読んでください。" +"翻訳作業をする前に `this guide`_ を読んでください。" #: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" @@ -321,10 +320,10 @@ msgid "" "your contributions will help add to a cohesive whole and make it easier for " "your contributions to be accepted into the project." msgstr "" -"このスタイルガイドは、あなたがどのように|PyPUG|を書くべきかについて推奨事項を" -"与えます。あなたが書き始める前に目を通してください。スタイルガイドに従うこと" -"であなたの貢献がまとまりのある全体の中の一部として追加され、あなたの貢献がプ" -"ロジェクトによって受け入れられやすくなります。" +"このスタイルガイドは、あなたがどのように |PyPUG| を書くべきかについて推奨事項" +"を与えます。あなたが書き始める前に目を通してください。スタイルガイドに従うこ" +"とであなたの貢献がまとまりのある全体の中の一部として追加され、あなたの貢献が" +"プロジェクトによって受け入れられやすくなります。" #: ../source/contribute.rst:179 msgid "Purpose" @@ -335,8 +334,8 @@ msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." msgstr "" -"|PyPUG|の目的は、現在のツール群を用いてPythonプロジェクトをパッケージし、公開" -"し、インストールする方法に関して権威ある参照先となることです。" +"|PyPUG| の目的は、現在のツール群を用いてPythonプロジェクトをパッケージし、公" +"開し、インストールする方法に関して権威ある参照先となることです。" #: ../source/contribute.rst:186 msgid "Scope" @@ -416,8 +415,8 @@ msgstr "" "頭が良くてスキルのある人たちと一緒にPythonのプロジェクトをやるところを思い描" "いてください。あなたは彼らと働くのが好きだし、彼らもあなたと働くのが好きなの" "です。そんな人があなたに質問をして、あなたが答えを知っていたとしましょう。あ" -"なたはどんな風に応対しますか?*それ*こそが、あなたがこの文書を書く時のやり方" -"なのです。" +"なたはどんな風に応対しますか? *それ* こそが、あなたがこの文書を書く時のやり" +"方なのです。" #: ../source/contribute.rst:223 msgid "" @@ -459,8 +458,8 @@ msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." msgstr "" -"推奨事項や実行すべきステップを与えるときは、読者に*あなた*と呼びかけるか、ま" -"たは、命令法を用いて欲しい。" +"推奨事項や実行すべきステップを与えるときは、読者に *あなた* と呼びかけるか、" +"または、命令法を用いて欲しい。" #: ../source/contribute.rst:0 msgid "Wrong: To install it, the user runs…" @@ -541,11 +540,11 @@ msgid "" "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " "avoid pronouns entirely." msgstr "" -"あなたが読者に直接呼びかけるときは「あなた」「あなたの」「あなたのもの」を" -"使ってください。そうできない場合は代名詞として「彼ら」「彼らの」「彼らのも" -"の」を使う(訳註:従来なら\"he\", \"she\"を用いた場所に\"they\"を使うことで" -"ジェンダーへの配慮を示す場合がある)か、または、代名詞をまったく使わないように" -"しましょう。" +"あなたが読者に直接呼びかけるときは「 *あなた* 」「 *あなたの* 」「 *あなたの" +"もの* 」を使ってください。そうできない場合は代名詞として「 *彼ら* 」「 *彼ら" +"の* 」「 *彼らのもの* 」を使う(訳註:従来なら\"he\", \"she\"を用いた場所に" +"\"they\"を使うことでジェンダーへの配慮を示す場合がある)か、または、代名詞を" +"まったく使わないようにしましょう。" #: ../source/contribute.rst:0 msgid "Wrong: A maintainer uploads the file. Then he…" @@ -681,7 +680,7 @@ msgid "" "tool downloads the specified Python-interpreter for Windows and packages it " "with all the dependencies in a single Windows-executable installer." msgstr "" -"`Pynsist `__は、Pythonで書かれたプログラム" +"`Pynsist `__ は、Pythonで書かれたプログラム" "群をNSISベースのPythonインタープリタ付きの単体インストーラにまとめるツールで" "す。ほとんどの場合、パッケージング作業ではユーザがPythonインタープリタのバー" "ジョンを選択することとプログラムの依存関係を宣言することしか求められません。" @@ -708,9 +707,9 @@ msgid "" "the MIT-licence." msgstr "" "Pynsistを使う大きな利点は、Windows用のパッケージをLinux上で作成することができ" -"るということです。 :any: `説明文書 ` には異なる種類のプログラ" -"ム(コンソール用やGUIを使うものなど)の例がいくつかあります。このツールはMITラ" -"イセンスのもとに公開されています。" +"るということです。 :any:`documentation ` には異なる種類のプロ" +"グラム(コンソール用やGUIを使うものなど)の例がいくつかあります。このツールは" +"MITライセンスのもとに公開されています。" #: ../source/discussions/deploying-python-applications.rst:77 msgid "Application bundles" @@ -734,12 +733,12 @@ msgstr "" "`py2exe `__ はdistutilsの拡張パッケージで、" "Pythonのスクリプトから単独で動作するWindowsの実行プログラム(32ビット版または" "64ビット版)を作成することができます。公式の開発サイクルに含まれるバージョンの" -"Pythonがすべてサポートされています(`Pythonのブランチの状況 `__を参照して下さい)。py2exeはコンソールで動作する実行可能ファイル" -"も、Windowsの(GUIの)実行ファイルも作成することができます。Windowsサービスや" -"DLL/EXE COMサーバを作成することもできるかもしれませんが、これらは活発にサポー" -"トされているとは言えません。distutilsの拡張パッケージは、MITライセンスと" -"Mozilla Publicライセンス2.0の下で公開されています。" +"Pythonがすべてサポートされています( `Status of Python branches`__ を参照して" +"下さい)。py2exeはコンソールで動作する実行可能ファイルも、Windowsの(GUIの)実行" +"ファイルも作成することができます。WindowsサービスやDLL/EXE COMサーバを作成す" +"ることもできるかもしれませんが、これらは活発にサポートされているとは言えませ" +"ん。distutilsの拡張パッケージは、MITライセンスとMozilla Publicライセンス2.0の" +"下で公開されています。" #: ../source/discussions/deploying-python-applications.rst:103 #: ../source/specifications/platform-compatibility-tags.rst:200 @@ -844,9 +843,9 @@ msgid "" msgstr "" "Linux の世界では、 \"配布パッケージ \" が \"ディストロ" "パッケージ \" か単に \"パッケージ \" と短縮形で呼ば" -"れることが通常であり、 `Linux ディストリビューション `_ のシステム" -"パッケージ管理者によって提供される何かのことであって、異なる意味で使われてい" -"るということは意識しておいてください。" +"れることが通常であり、 `Linux distibution `_ のシステムパッケージ管" +"理者によって提供される何かのことであって、異なる意味で使われているということ" +"は意識しておいてください。" #: ../source/discussions/distribution-package-vs-import-package.rst:31 msgid "What's an import package?" @@ -863,11 +862,13 @@ msgid "" "subpackages as subdirectories." msgstr "" "インポートパッケージは Python モジュールです。したがって、 Python コードに " -"``import pkg`` もしくは ``from pkg import func`` と書く時、``pkg`` の部分はイ" -"ンポートパッケージの名称です。より精確には、インポートパッケージは、サブモ" -"ジュールを内包することができる特別な Python モジュールです。通常は、インポー" -"トパッケージはファイルシステム上のディレクトリであって、モジュールを ``.py`` " -"の形で含み、サブパッケージをサブディレクトリの形で含むものです。" +"``import pkg`` もしくは ``from pkg import func`` と書く時、 ``pkg`` の部分は" +"インポートパッケージの名称です。より精確には、インポートパッケージは、サブモ" +"ジュールを内包することができる特別な Python モジュールです。例えば、 " +"``numpy`` パッケージは ``numpy.linalg`` や ``numpy.fft`` のようなモジュールを" +"内包しています。通常は、インポートパッケージはファイルシステム上のディレクト" +"リであって、モジュールを ``.py`` の形で含み、サブパッケージをサブディレクトリ" +"の形で含むものです。" #: ../source/discussions/distribution-package-vs-import-package.rst:42 msgid "" @@ -1233,10 +1234,10 @@ msgid "" "shell completions, editor support files, and so on." msgstr "" "理想的には、 ** PyPI上で公開されたソースコード配布物のアーカイブには、その" -"パッケージの Git リポジトリからパッケージ自体をビルドし、テストスイートを走ら" -"せ、説明文書をインストールするために必要なファイルや、シェル補完やエディタ用" -"のサポートファイルなどエンドユーザにとって役に立つかもしれない他のファイルを" -"全て含めるべきです ** 。" +"パッケージの Git リポジトリのファイルを全て含み ** 、それらのファイル群から" +"パッケージ自体をビルドし、テストスイートを走らせ、説明文書をインストールする" +"ために必要なファイルや、シェル補完やエディタ用のサポートファイルなどエンド" +"ユーザにとって役に立つかもしれない他のファイルを全て含めるべきです。" #: ../source/discussions/downstream-packaging.rst:107 msgid "" @@ -1292,8 +1293,8 @@ msgstr "" "に、ユーザがテストスイートを走らせることを許すという利点を追加することができ" "ます。さらに別のやり方としては、テストスイートやテストデータを別の Python " "パッケージに分割する方法があります。そのような方法は、巨大なテストベクトルを " -"cryptography-vectors_package に分離する形で、 cryptography_ プロジェクトで採" -"用されています。" +"cryptography-vectors_package に分離する形で、 cryptography_project で採用され" +"ています。" #: ../source/discussions/downstream-packaging.rst:132 msgid "" @@ -2071,18 +2072,18 @@ msgid "" "correctly. When the project is installed by :ref:`pip`, this is the " "specification that is used to install its dependencies." msgstr "" -"``install_requires``は:ref:`setuptools` :file:`setup.py`のキーワードで、その" -"プロジェクトが正しく動作するために必要な最小限のものを指定するものです。プロ" -"ジェクトが:ref:`pip`でインストールされた場合には、プロジェクトが依存するパッ" -"ケージをインストールするのに用いられます。" +"``install_requires`` は :ref:`setuptools` :file:`setup.py` のキーワードで、そ" +"のプロジェクトが正しく動作するために必要な **最小限** のものを指定するもので" +"す。プロジェクトが :ref:`pip` でインストールされた場合には、プロジェクトが依" +"存するパッケージをインストールするのに用いられます。" #: ../source/discussions/install-requires-vs-requirements.rst:16 msgid "" "For example, if the project requires A and B, your ``install_requires`` " "would be like so:" msgstr "" -"例えば、プロジェクトがAとBに依存しているなら、``install_requires``は次のよう" -"になるでしょう:" +"例えば、プロジェクトがAとBに依存しているなら、 ``install_requires`` は次のよ" +"うになるでしょう:" #: ../source/discussions/install-requires-vs-requirements.rst:26 msgid "" @@ -2117,8 +2118,8 @@ msgid "" "prevents the user from gaining the benefit of dependency upgrades." msgstr "" "依存関係にあるものを特定のバージョンに固定するために、あるいは、さらなる依存" -"関係(すなわち、あなたの依存先が依存するもの)を指定するために" -"``install_requires``を使うことはベストプラクティスとは考えられていません。こ" +"関係(すなわち、あなたの依存先が依存するもの)を指定するために " +"``install_requires`` を使うことはベストプラクティスとは考えられていません。こ" "れは過剰に制限的であり、依存関係にあるものをまとめて更新することからユーザが" "得られる利益を阻害するものと考えられています。" @@ -2131,11 +2132,12 @@ msgid "" "\"Concrete\") is to be determined at install time using :ref:`pip` options. " "[1]_" msgstr "" -"最後に、``install_requires``が必要事項の「要約」のリスト、つまり、単に必要事" -"項の名前とバージョンが要求されるだけあって、どこから(すなわち、どんな索引や情" -"報源から)充当するのかについては要求していないのだということを理解することは重" -"要です。どこから(すなわち、どのようにして「具体化」されるのか)という点につい" -"ては、:ref:`pip`のオプションを使ってインストール時に決定されるのです。[1]_" +"最後に、 ``install_requires`` が必要事項の「要約」のリスト、つまり、単に必要" +"事項の名前とバージョンが要求されるだけあって、どこから(すなわち、どんな索引や" +"情報源から)充当するのかについては要求していないのだということを理解することは" +"重要です。どこから(すなわち、どのようにして「具体化」されるのか)という点につ" +"いては、 :ref:`pip` のオプションを使ってインストール時に決定されるのです。" +"[1]_" #: ../source/discussions/install-requires-vs-requirements.rst:62 #: ../source/tutorials/installing-packages.rst:464 @@ -2147,8 +2149,8 @@ msgid "" ":ref:`Requirements Files ` described most simply, " "are just a list of :ref:`pip:pip install` arguments placed into a file." msgstr "" -":ref:`Requirementsファイル `は、一番簡単にいうなら" -"ば、:ref:`pip:pip install`の引数のリストをファイルに書いただけのものです。" +":ref:`Requirementsファイル ` は、一番簡単にいうなら" +"ば、 :ref:`pip:pip install` の引数のリストをファイルに書いただけのものです。" #: ../source/discussions/install-requires-vs-requirements.rst:67 msgid "" @@ -2156,9 +2158,9 @@ msgid "" "project, :ref:`Requirements Files ` are often used " "to define the requirements for a complete Python environment." msgstr "" -"``install_requires``が単一のプロジェクトにおける依存関係を定義する一方" -"で、:ref:`Requirements Files `はPython環境全体に対す" -"る要求事項を定義するのにしばしば用いられます。" +"``install_requires`` が単一のプロジェクトにおける依存関係を定義する一方" +"で、 :ref:`Requirements Files ` はPython環境全体に対" +"する要求事項を定義するのにしばしば用いられます。" #: ../source/discussions/install-requires-vs-requirements.rst:71 msgid "" @@ -2167,9 +2169,9 @@ msgid "" "achieving :ref:`repeatable installations ` of a complete " "environment." msgstr "" -"``install_requires``での要求事項が最小限のものである一方で、requirementsファ" -"イルは再現可能な形で環境全体をインストールできるようにする:ref:`repeatable " -"installations `という目的に沿って限定されたバージョンの網" +"``install_requires`` での要求事項が最小限のものである一方で、requirementsファ" +"イルは再現可能な形で環境全体をインストールできるようにする :ref:`repeatable " +"installations ` という目的に沿って限定されたバージョンの網" "羅的なリストを含むことがしばしばです。" #: ../source/discussions/install-requires-vs-requirements.rst:76 @@ -3935,9 +3937,8 @@ msgid "" "` by providing a package level ``__version__`` attribute::" msgstr "" "多くのプロジェクトでは、パッケージレベルの ``__version__`` アトリビュートを提" -"供することで、トップレベルの :term:`インポートパッケージ `:term:`インポートパッケージ ` にバージョン番号を付与" -"することも選択しています::" +"供することで、トップレベルの :term:`インポートパッケージ ` に" +"バージョン番号を付与することも選択しています::" #: ../source/discussions/versioning.rst:194 msgid "" @@ -3972,12 +3973,13 @@ msgid "" "missing [#fallback-to-dist-version]_." msgstr "" "インポートされたパッケージやモジュールはランタイムのバージョン情報をこのやり" -"方で公開することを *要求* されてはいない (:pep:`396` で撤回された提案を見てく" -"ださい) ので、 ``__version__`` アトリビュートは、それを提供するものとして知ら" -"れているインターフェース (あるプロジェクトが自身のバージョン番号やその直接の" -"依存先のバージョン番号を問い合わせるなど) だけから問い合わせを受けるか、また" -"は、問い合わせる側のコードがアトリビュート欠損の場合 [#fallback-to-dist-" -"version]_ を取り扱えるように設計されているかのいずれかであるべきです。" +"方で公開することを *要求* されてはいない ( :pep:`PEP 396 <396>` で撤回された" +"提案を見てください) ので、 ``__version__`` アトリビュートは、それを提供するも" +"のとして知られているインターフェース (あるプロジェクトが自身のバージョン番号" +"やその直接の依存先のバージョン番号を問い合わせるなど) だけから問い合わせを受" +"けるか、または、問い合わせる側のコードがアトリビュート欠損の場合 [#fallback-" +"to-dist-version]_ を取り扱えるように設計されているかのいずれかであるべきで" +"す。" #: ../source/discussions/versioning.rst:210 msgid "" @@ -4480,8 +4482,8 @@ msgid "" "\"sdist\")>` and ``METADATA`` in a :term:`Wheel`)." msgstr "" "インストールされた :term:`プロジェクト ` (``METADATA`` ファイル) " -"や :term:`配布物アーカイブ ` (:term:`Sdist ` の中の ``PKG-INFO`` や :term:`Wheel` 内の " +"や :term:`配布物アーカイブ ` ( :term:`Sdist ` の中の ``PKG-INFO`` や :term:`Wheel` 内の " "``METADATA``) の内部に含まれる場合に :term:`コアとなるメタデータ ` が具体的な形式を取ることになります。" @@ -4674,15 +4676,15 @@ msgstr "SPDX 表現" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" "ひとつかそれ以上の SPDX :term:`ライセンス識別子 ` (複数の" -"場合もあり) を含む、正当な SPDX ライセンス表現の文法を伴う文字列で、 :term:`" -"プロジェクト ` のライセンス(群) を記述し、どのように相互に関係するの" -"かを表現するもの。例: ``GPL-3.0-or-later`` ・ ``MIT AND (Apache-2.0 OR BSD-2-" -"Clause)``" +"場合もあり) を含む、正当な SPDX ライセンス表現のシンタックスを伴う文字列" +"で、 :term:`配布物アーカイブ ` のライセンス(群) を記述" +"し、どのように相互に関係するのかを表現するもの。例: ``GPL-3.0-or-later`` ・ " +"``MIT AND (Apache-2.0 OR BSD-2-Clause)``" #: ../source/glossary.rst:169 msgid "License Identifier" @@ -4913,24 +4915,23 @@ msgstr "Pythonパッケージングオーソリティ(PyPA)" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" "PyPAは、Pythonのパッケージングに関係する多くのプロジェクトを維持管理する作業" "グループです。その活動の一環として :doc:`papa.io ` を維持管理して" -"おり、 `GitHub `_ と `Bitbucket `_ に関連プロジェクトを置くとともに、 `distutils-sig メー" -"リングリスト `_ と `Python談話フォーラム `__ で議論を進めています。" +"おり、 `GitHub `_ に関連プロジェクトを置くととも" +"に、 `distutils-sig メーリングリスト `_ と `Python談話フォーラム `__ で議論を進めています。" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "Pythonパッケージインデックス (PyPI)" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " @@ -4940,11 +4941,11 @@ msgstr "" "の :term:`Package Index`です。ここから配布物を取り出し、また、配布するために" "すべてのPython開発者に開かれています。" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "pypi.org" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " @@ -4954,22 +4955,22 @@ msgstr "" "(PyPI)` のためのドメイン名です。2017年にそれまでのドメイン名である " "``pypi.python.org`` を置き換えました。 :ref:`warehouse`を使っています。" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "pyproject.toml" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" "ツール不可知論者の :term:`プロジェクト ` 仕様を示すファイ" "ル。 :pep:`518` で定義。" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "リリース" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." @@ -4977,7 +4978,7 @@ msgstr "" "ある特定の時点における :term:`プロジェクト `のスナップショットで、" "バージョン識別子付きのもの。" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -4989,11 +4990,11 @@ msgstr "" "らば、ソースコード配布物とWindowsインストーラ付配布物の両方が利用可能となって" "いるという具合です。" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "要求事項" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -5007,11 +5008,11 @@ msgstr "" "を許容しています。詳細については、 :ref:`pip:pip install` の項を参照してくだ" "さい。" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "要求事項識別子" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -5024,11 +5025,11 @@ msgstr "" "\"foo>=1.3\" は要求事項識別子であり、 \"foo\" の部分がプロジェクトの名称で、 " "\">=1.3\" の部分は :term:`バージョン指定子 ` です" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "Requirementsファイル" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " @@ -5038,15 +5039,15 @@ msgstr "" "記したファイル。詳しい情報は、 :ref:`pip` のドキュメント" "の :ref:`pip:Requirementsファイル ` をみてください。" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "ライセンスディレクトリのルート" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "ライセンスディレクトリ" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -5060,17 +5061,17 @@ msgstr "" ":term:`プロジェクトソースツリー <その下にライセンスファイル群を保存するディレ" "クトリ" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "setup.py" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "setup.cfg" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." @@ -5078,11 +5079,11 @@ msgstr "" ":ref:`distutils`や :ref:`setuptools` で使われるプロジェクトの仕様を記したファ" "イル。 :term:`pyproject.toml`も見てください。" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "ソースコードアーカイブ" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` という用語を作る前には、:term:`リリース " "`向けに生のソースコードを収めたアーカイブのことをこう呼んでいた。" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" "`ソースコード配布物 (またはsdist) `" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -5111,11 +5112,11 @@ msgstr "" "``python -m build --sdist`` を使って生成されます) 。もっと情報が欲しけれ" "ば、 :ref:`パッケージフォーマット ` を見てください。" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "システムパッケージ" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." @@ -5123,11 +5124,11 @@ msgstr "" "rpmやdpkgのように、オペレーティングシステムに固有のフォーマットで提供される" "パッケージ。" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "バージョン指定子" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -5141,11 +5142,11 @@ msgstr "" "specifiers>` を読んでください。この仕様のサポートは、 :ref:`setuptools` v8.0 " "と :ref:`pip` v6.0 で実装されました。" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "仮想環境" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -5157,15 +5158,15 @@ msgstr "" "環境の生成と使用 ` を見てください。参照実装である :term:`Wheel プロ" "ジェクト ` と混同しないように。" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "Wheel プロジェクト" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." @@ -5190,11 +5191,11 @@ msgstr "" ":term:`Wheel フォーマット ` の PyPA による参照実" "装; :ref:`wheel` 参照。" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "動作可能セット" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -5392,7 +5393,7 @@ msgstr "説明" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "例" @@ -5795,7 +5796,7 @@ msgstr "" "できます。" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "参考文献" @@ -6250,12 +6251,12 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" "しかしながら、このシンタックスはちょっと実際的ではありません; 上で定義したエ" -"ントリポイントの名称がパッケージ名称と一致しないので、 (たとえひとつしか実行" -"スクリプトがないとしても) 明示的にどの実行スクリプトを走らせるのかを述べる必" -"要があります。" +"ントリポイントの名称がパッケージ名称と一致しないので、 (たとえたったひとつだ" +"けしか実行スクリプトがないとしても) 明示的にどの実行スクリプトを走らせるのか" +"を述べる必要があります。" #: ../source/guides/creating-command-line-tools.rst:159 msgid "" @@ -9006,18 +9007,19 @@ msgstr "ライセンシングの例とユーザシナリオ" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" -":pep:`639` では、プロジェクトの来船を宣言する方法やライセンスファイルへのパ" -"ス、そして、その他の法的に要求される情報を仕様化しています。この説明文書は、" -"レガシーなライセンス宣言から標準化されたそれへどのようにして移行するのかに関" -"する明確なガイダンスを提供することを目的としています。より新しいガイダンスを" -"適用しようと試みる前に、好みのビルドバックエンドが :pep:`639` をサポートして" -"いることを確認してください。" +":pep:`639` では、 :term:`配布物アーカイブ ` のライセン" +"スを宣言する方法やライセンスファイルへのパス、そして、その他の法的に要求され" +"る情報を仕様化しています。この説明文書は、レガシーなライセンス宣言から標準化" +"されたそれへどのようにして移行するのかに関する明確なガイダンスを提供すること" +"を目的としています。より新しいガイダンスを適用しようと試みる前に、好みのビル" +"ドバックエンドが :pep:`639` をサポートしていることを確認してください。" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 msgid "Licensing Examples" @@ -9062,9 +9064,11 @@ msgstr "" "``[metadata]`` テーブルで:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" -"配布物パッケージのためのコアとなるメタデータの出力はこんなふうになるでしょう:" +":term:`配布パッケージ ` のためのコアとなるメタデータの" +"出力はこんなふうになるでしょう:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 msgid "" @@ -9082,11 +9086,11 @@ msgstr "" "れのアーカイブのルートディレクトリであり、 ``{VERSION}`` はコアとなるメタデー" "タ内の Setuptools のリリースのバージョンです。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "先進的な例" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " @@ -9096,11 +9100,11 @@ msgstr "" "_vendor/` のディレクトリ内に第三者のプロジェクトのライセンスを包含していたと" "しましょう; 特にこの場合は:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" -msgstr "これらのプロジェクトに対するライセンス条項は:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" +msgstr "適切なライセンス表現は:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " @@ -9110,7 +9114,7 @@ msgstr "" "イセンス条項をすべてひとつにまとめて、これらのメタデータを包含することになる" "でしょう。そのような条項はこんなものになるでしょう:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -9130,7 +9134,7 @@ msgstr "" "ピーライト文言や `ライセンス選択通知 `__ があるものと思っ" "てください。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " @@ -9140,13 +9144,13 @@ msgstr "" "(プロジェクトルートと :file:`pyproject.toml` からの相対) パスに位置するものと" "仮定しています:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" "これらをすべて一緒にすると、 :file:`pyproject.toml` はこんなふうになるでしょ" "う:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" @@ -9154,20 +9158,20 @@ msgstr "" "あるいは、別の方法としては、ライセンスファイル群を明示的に示すこともできます " "(パスはglobパターンとして解釈されるでしょう):" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" ":file:`setup.cfg` をプロジェクトで使っているなら、こんなふうに定義することが" "できます:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" "どちらのアプローチでも、配布物内のコアとなるメタデータの出力はこんな風になる" "でしょう:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " @@ -9178,7 +9182,7 @@ msgstr "" "バージョン番号として、ライセンスファイル群が次のようなパスに配置されるでしょ" "う:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" @@ -9186,7 +9190,7 @@ msgstr "" "ビルド済みの wheel では、 :file:`/` をルートディレクトリとし、 ``{VERSION}`` " "を先述の通りとして、ライセンスファイル群は次の場所に保存されるでしょう:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " @@ -9196,19 +9200,19 @@ msgstr "" "ディレクトリとし、 ``{VERSION}`` を先述の通りとして、ライセンスファイル群は次" "の場所にインストールされるでしょう:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "表現 の例" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "いくつかの追加の ``License-Expression`` の正当な値の例:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "ユーザシナリオ" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -9222,11 +9226,11 @@ msgstr "" "て確信を持てないならば、それを法律上の管轄範囲とするライセンスを持った法律実" "務家に相談するべきす。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "配布するつもりのないプライベートなパッケージがあります" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " @@ -9236,7 +9240,7 @@ msgstr "" "ら、 *通常は* 厳格に公式のライセンス (ファイル) を含める必要があるわけではあ" "りませんし、だからここで何か追加の作業をする必要があるわけではないでしょう。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -9249,11 +9253,11 @@ msgstr "" "パッケージの設定の中にライセンス条項として ``LicenseRef-Proprietary`` や著作" "権情報やその他の法的通知を含めておくことは良い考えです。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "自分の作品を法的制限なしに共有したいだけです" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -9269,7 +9273,7 @@ msgstr "" "作品に対して誰でも (多分作者も望まないでしょうが、作者相手に訴訟を起こす以外" "の) どんなことでも許容するので、その代替として偉大な選択肢です。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -9284,11 +9288,11 @@ msgstr "" "``license = \"MIT\"`` を :file:`pyproject.toml` の中の ``[project]`` の下か、" "あるいは、設定ファイル・節の中に追加してください。これで出来上がりです!" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "プロジェクトを特定のライセンスの下で配布したい" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -9308,7 +9312,7 @@ msgstr "" "`__ や `SPDX `__ のようなサイトに行けば、 " "``LICENSE-ID`` とコピー可能なライセンス条項を見つけることができるでしょう。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." @@ -9317,11 +9321,11 @@ msgstr "" "ツールによってライセンスファイルを加えることができ、将来に渡って表現をサポー" "トするでしょう。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "既にライセンスが付与された既存パッケージを維持管理しています" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " @@ -9330,7 +9334,7 @@ msgstr "" "ライセンスファイルやプロジェクト内のメタデータが既に存在しているなら、新機能" "の利点を得るためには2,3の捻りを加えるだけで良いはずです。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -9338,18 +9342,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" "プロジェクト設定ファイルにおいて、ライセンス条項を ``license`` " "(:file:`pyproject.toml` の ``[project]`` テーブル) の下か、使っているパッケー" "ジングツールでの相当する場所に置き、古いやり方である ``license`` テーブルサブ" "キーや ``License::`` 分類子を取り除くのを忘れないでください。既存の " "``license`` 値は、そのままでも正当なもの (例えば ``MIT`` や ``Apache-2.0 OR " -"BSD-2-Clause`` 等) かもしれません; そうでなければ、そのプロジェクトで採用して" -"いるライセンスに合致する識別子を `SPDX ライセンスリスト `__ で確認" -"して下さい。" +"BSD-2-Clause`` 等) かもしれません; そうでなければ、採用しているライセンスに合" +"致する識別子を `SPDX ライセンスリスト `__ で確認して下さい。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " @@ -9359,7 +9362,7 @@ msgstr "" "しているツールの設定ファイルに、ライセンスファイル群を列挙しておくのを忘れな" "いでください。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -9378,11 +9381,11 @@ msgstr "" "いるかもしれませんので、さらなる情報を得るために使っているツールの説明文書を" "調べて下さい。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "私のパッケージには異なるライセンスの他のソースコードが含まれています" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -9394,22 +9397,21 @@ msgstr "" "含んでいるなら、関与するライセンスとそれらの間の関係を記述するために、ライセ" "ンス条項を構築することができます。" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 -msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." -msgstr "" -"端的に言えば、 ``License-1 AND License-2`` では、 *両方の* ライセンスか、また" -"は、その一部 (例えば、同梱されたあるファイルがもう一つの方のライセンスの下に" -"ある) がプロジェクトに適用され、 ``License-1 OR License-2`` では、ユーザの選" -"択によって、 *いずれか一方の* ライセンス (例えば、複数のライセンスから一つを" -"選ぶことをユーザに許したい) を適用しても構いません。もっとも込み入った状況で" -"さえもカバーできる表現を組み立てるためのグループ化のために括弧 (``()``) を使" -"うことができます。" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 +msgid "" +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." +msgstr "" +"端的に言えば、 ``License-1 AND License-2`` は *両方の* ライセンスが適用される" +"こと (例えば、同梱されたあるファイルがもう一つの方のライセンスの下にある) を" +"意味し、また、 ``License-1 OR License-2`` では、ユーザの選択によって、 *いず" +"れか一方の* ライセンスを使用することができます (例えば、複数のライセンスから" +"一つを選ぶことをユーザに許したい) 。もっと込み入った状況でさえもカバーできる" +"表現を組み立てるためのグループ化のために括弧 (``()``) を使うことができます。" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 msgid "" @@ -11862,12 +11864,12 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" -"`Travis CI `_ は Linux と macOS の両方の環境を提供しま" -"す。原稿執筆時点で、 Linux 環境は Ubuntu 12.04 LTS Server Edition 64 bit " +"`Travis CI `_ は Linux と macOS の両方の環境を提供しま" +"す。本稿執筆時点で、 Linux 環境は Ubuntu 12.04 LTS Server Edition 64 bit " "で、 macOS 環境は 10.9.2 です。" #: ../source/guides/supporting-multiple-python-versions.rst:68 @@ -12749,7 +12751,11 @@ msgstr "" "ますし、まだ setuptools から利用可能ではありますが Python 3.12 で標準ライブラ" "リから取り除かれたものです。" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "拡張モジュール用のビルドバックエンド" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " @@ -12759,7 +12765,7 @@ msgstr "" "張が書かれた言語用の専用サポートのあるビルドシステムを使うのが最善です、例え" "ば:" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," @@ -12767,7 +12773,7 @@ msgstr "" ":ref:`setuptools` -- C 言語および C++ 言語をネイティブにサポート (サードパー" "ティのプラグインで Go 言語と Rust 言語も)、" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," @@ -12775,7 +12781,7 @@ msgstr "" ":ref:`meson-python` -- C 言語・ C++ 言語・ Fortran ・ Rust およびその他の言語" "が Meson によってサポートされています、" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," @@ -12783,15 +12789,15 @@ msgstr "" ":ref:`scikit-build-core` -- C 言語・ C++ 言語・ Fortran やその他の言語が " "CMake によってサポートされています、" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr ":ref:`maturin` -- Rust 、 Cargo を経由して。" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "配布物をビルドする" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -12804,7 +12810,7 @@ msgstr "" "guide-build-system-table>` ビルドバックエンドが何であれ、それを起動することに" "なります。" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " @@ -12814,7 +12820,7 @@ msgstr "" "bdist_wheel`` を *使わないで* ください。:file:`setup.py` を直接に起動すること" "は :ref:`非推奨 ` になっています。" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " @@ -12824,11 +12830,11 @@ msgstr "" "フォーム向けに wheel ファイルを配布したいと考えているなら、配布可能な wheel " "ファイルをビルドする CI 環境の一部として :ref:`cibuildwheel` を使いましょう。" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "PyPIにアップロードする" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -12841,7 +12847,7 @@ msgstr "" "る :ref:`Trusted Publishing ` を使うことが推奨されていま" "す。" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" @@ -12849,23 +12855,23 @@ msgstr "" "2024 年 11 月の時点では、 PyPI は以下のプラットフォームを 信頼ある公開 " " プロバイダとしてサポートしています:" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "(``https://github.com`` における) GitHub Actions" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "(``https://gitlab.com`` における) GitLab CI/CD" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "ActiveState" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "Google Cloud" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." @@ -12873,7 +12879,7 @@ msgstr "" "利用可能なもうひとつの方法は、 :ref:`twine` を用いて手動でパッケージをアップ" "ロードすることです。" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." @@ -12882,11 +12888,11 @@ msgstr "" "* ください。 :ref:`非推奨 ` であることに加えて、危険 " " です。" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "ワークフローツール" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -12904,31 +12910,31 @@ msgstr "" "のロックファイルをサポートしています。これらは、往々にして、先述のツール群を" "内部的に呼び出しています。アルファベット順に:" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr ":ref:`Flit`," -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr ":ref:`Hatch`," -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr ":doc:`nox `," -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr ":ref:`PDM`," -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr ":ref:`Pipenv`," -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr ":ref:`Poetry`," -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr ":doc:`tox `." @@ -13458,7 +13464,7 @@ msgid "``license`` and ``license-files``" msgstr "``license`` と ``license-files``" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" ":pep:`639` によれば、ライセンスはふたつのフィールドで宣言されるべきです:" @@ -13584,24 +13590,25 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -"プロジェクトが使っているライセンスが既存の SPDX 識別子を持っていない時は、 " -"``LicenseRef-[idstring]`` の書式で作成することができます。カスタムの識別子" -"は、バージョン 2.2 かそれより新しい互換のバージョンの `clause 10.1 " -"`_ という SPDX 仕様に従わなければなりません。" +":term:`配布物アーカイブ ` が使っているライセンスが既存" +"の SPDX 識別子を持っていない時は、 ``LicenseRef-[idstring]`` の書式で作成する" +"ことができます。カスタム識別子は、バージョン 2.2 かそれより新しい互換のバー" +"ジョンの `clause 10.1 `_ という SPDX 仕様に従わなければなりま" +"せん。" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "``license-files``" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." @@ -13609,11 +13616,11 @@ msgstr "" "これは、そのパッケージとともに配布したいと望む、ライセンスファイルとその他の" "法律関係の情報を含むファイルのリストです。" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "glob パターンは、次の仕様に従わなければなりません:" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." @@ -13621,18 +13628,18 @@ msgstr "" "英数字・アンダースコア (``_``) ・ハイフン (``-``) ・ドット (``.``) が文字通り" "に合致するでしょう。" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" "特殊文字: ``*`` ・ ``?`` ・ ``**`` と文字の帯域: [] がサポートされています。" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "パスデリミタは、正スラッシュ (``/``) でなければなりません。" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." @@ -13640,15 +13647,15 @@ msgstr "" "パターンは、 :file:`pyproject.toml` を含むディレクトリに対する相対パスで、" "従ってスラッシュ文字で始まることはできません。" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "親ディレクトリ表示子 (``..``) を使用してはなりません。" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "各 glob は、少なくとも一つのファイルにマッチしなければなりません。" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." @@ -13656,13 +13663,13 @@ msgstr "" "字義通りのパスは、正当な glob です。この仕様でカバーされていない文字や文字の" "並びは、すべて、正当なものではありません。" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -13670,13 +13677,13 @@ msgstr "" "これは、 PyPI 上の検索でキーワードが与えられた時にこのプロジェクトをサジェス" "トするのを助けます。" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "``分類詞 ``" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -13684,7 +13691,7 @@ msgstr "" "プロジェクトに合致する PyPI 分類子 のリスト。 `可能な分類子のリ" "スト `_ を参照してください。" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -13699,7 +13706,7 @@ msgstr "" "トールされ得るのかを実際に制約するためには、 :ref:`requires-python` 引数を" "使ってください。" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " @@ -13709,13 +13716,13 @@ msgstr "" "Upload`` 分類子を使いましょう。``Private ::`` で始まる分類子を付けられたパッ" "ケージを PyPI は常に拒否します。" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -13723,7 +13730,7 @@ msgstr "" "プロジェクトに関連のある URL のリストで、PyPI 上のプロジェクトページの左サイ" "ドバーに表示されるもの。" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -13735,7 +13742,7 @@ msgstr "" "て見たければ `PyPI のプロジェクトメタデータ説明文書 `_ を見て下さい。" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" @@ -13745,7 +13752,7 @@ msgstr "" "example.com\"`` ではなくて ``\"Official Website\" = \"https://" "example.com\"`` のように引用符で囲む必要があります。" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " @@ -13755,7 +13762,7 @@ msgstr "" "することができるように、ユーザにはそのプロジェクトの適切な URL のため" "に :ref:`well-known-labels` を使用することを推奨します。" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " @@ -13765,7 +13772,7 @@ msgstr "" "Link\"`` のいずれもよく知られたラベルではなく、従って、これらは文字通りに展開" "されます:" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -13777,11 +13784,11 @@ msgstr "" "れ得ることを心に留めておいて下さい (順にそれぞれプロジェクトのホームページ、" "および、その外部のダウンロードできる場所)。" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "先進的なプラグイン" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " @@ -13792,16 +13799,16 @@ msgstr "" "以下のように ``[project.entry-points]`` のサブテーブルで宣言する必要がありま" "す:" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" "詳しくは、 :ref:`プラグインガイド ` を見てください。" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "完全な例" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -13811,7 +13818,7 @@ msgstr "" "考えてください。起きる可能性のある問題に関するいくらかの情報が `このブログ記" "事 `_ にあります。" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -17829,52 +17836,49 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" "RECORD は、 wheel に含まれる (ほとんど) 全てのファイルとそのセキュアなハッ" "シュ値のリストです。 PEP 376 とは異なり、自分自身のハッシュ値を内包することは" -"不可能な RECORD を除く各ファイルのハッシュ値が含まれていなければなりません。" -"署名済みの wheel ファイルがアーカイブの完全性を検証するのに RECORD 内の暗号学" -"的に強いハッシュ値に依存しているので、ハッシュ計算のアルゴリズムは sha256 以" -"上でなければならず、特に md5 とsha1 は許されません。" +"不可能な RECORD を除く個々のファイルのハッシュ値が含まれていなければなりませ" +"ん。ハッシュ計算のアルゴリズムは sha256 以上でなければならず、特に md5 と" +"sha1 は許されません。" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "PEP 376 の INSTALLER と REQUESTED はアーカイブに含まれません。" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" -"RECORD.jws は、デジタル署名のために使われます。これについては RECORD では触れ" -"られません。" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -"自分の wheel ファイルを S/MIME 署名でセキュアにすることを好む人は、 " -"RECORD.p7s を使うことができます。これについては RECORD では触れられません。" +"RECORD.jws および RECORD.p7s は非推奨になりました。これらがまだ使われている場" +"所では、 RECORD.jws と RECORD.p7s のいずれも RECORD の中で言及してはなりませ" +"ん。ビルドバックエンドとその他のツール類はもはやこれらを wheel ファイルに追加" +"してはならず、 インストーラはこれらのファイルがまだその一部をなすような " +"wheel ファイルも存在するということを認識しておくべきです。" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" "展開中に wheel インストーラは RECORD 内のハッシュ値と実際のファイルの内容 (の" -"ハッシュ値) をすべて検証します。 RECORD とその署名による検証に加えて、アーカ" -"イブの中のいずれかのファイルが RECORD にリストされていないか、または、正しく" -"ハッシュされていない時にはインストールがフェイルするでしょう。" +"ハッシュ値) をすべて検証します。 RECORD ・ RECORD.jws ・ RECORD.p7s による検" +"証とは別に、アーカイブの中のいずれかのファイルが RECORD にリストされていない" +"か、または、ハッシュ値が正しくない時には、インストールがフェイルするでしょ" +"う。" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr ":file:`.dist-info/` 内のサブディレクトリ群" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " @@ -17884,48 +17888,48 @@ msgstr "" "ます。 :file:`.dist-info/` の下のサブディレクトリ名で以下のものが特定の用途の" "ために予約されています:" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "サブディレクトリ名" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "PEP / Standard" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "``licenses``" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr ":pep:`639`" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "``license_files``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "``LICENSES``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "`REUSE ライセンシングフレームワーク `__" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "``sboms``" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr ":pep:`770`" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr ":file:`.dist-info/licenses/` ディレクトリ" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -17940,11 +17944,11 @@ msgstr "" "に :file:`licenses/` ディレクトリからの相対パスの形で列挙されたファイル群を含" "んでいなければなりません。" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "The :file:`.dist-info/sboms/` ディレクトリ" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " @@ -17954,11 +17958,11 @@ msgstr "" "イブ内に含まれるソフトウェアを記述するソフトウェア部品表 (SBOM) のファイルでなければなりません。" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr ".data ディレクトリ" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " @@ -17968,7 +17972,7 @@ msgstr "" "も、.dist-info ディレクトリと同様に命名されるが .data/ 拡張子をつけられ" "て .data ディレクトリに行きます::" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " @@ -17978,114 +17982,18 @@ msgstr "" "ディレクトリに収めています。インストール中に、これらのサブディレクトリの内容" "を行き先となるパスへ動かします。" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "署名済み wheel ファイル" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" -"Wheel ファイルは、デジタル署名を可能にした拡張 RECORD ファイルを含みます。 " -"PEP 376 の RECORD は、 md5sum の代わりにセキュアなハッシュ値 " -"``digestname=urlsafe_b64encode_nopad(digest)`` (末尾に = 文字を追加しない " -"url セーフな base64 エンコード) を二つ目のカラムとするように修正されました。" -"生成された .pyc ファイルなども含むすべての可能なエントリにハッシュ値が付加さ" -"れていますが、 RECORD は自身のハッシュ値を含むことができないので例外です。例" -"えば::" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" -"署名用のファイルである RECORD.jws と RECORD.p7s は、 RECORD ファイルが作成さ" -"れた後にしか追加できないので、RECORD ファイル内で言及されることは全くありませ" -"ん。アーカイブの中の他のファイルはすべて、RECORD ファイル内に正しいハッシュ値" -"を持たなければならず、そうでなければインストールに失敗します。" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" -"JSON ウェブ署名が使われる場合には、ひとつかそれ以上の JSON Web Signature " -"JSON Serialization (JWS-JS) 署名が RECORD ファイルの隣にある RECORD.jws ファ" -"イルの中に保存されます。 RECORD ファイルの SHA-256 ハッシュ値を署名の JSON ペ" -"イロードに含むことで RECORD ファイルに署名するために JWS が使われます:" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "(ハッシュ値の書き方のフォーマットは RECORD で使われるものと同じです。)" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" -"RECORD.p7s を使う場合は、このファイルに RECORD ファイルに関する分離型の S/" -"MIME 署名を入れておかなければなりません。" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" -"wheel インストーラはデジタル署名を理解することを要求されてはいませんが、 " -"RECORD ファイル内のハッシュ値が展開されたファイル内容に対して妥当であることを" -"検証しなければなりません。インストーラが RECORD ファイルに対するハッシュ値を" -"確認する際には、別途用意された署名検証プログラムは RECORD ファイルが署名に対" -"して妥当であることだけを確認すれば十分です。" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "以下を参照のこと" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "https://datatracker.ietf.org/doc/html/rfc7515" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "https://datatracker.ietf.org/doc/html/rfc7517" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "FAQ" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" "Wheel は .data ディレクトリを定義します。すべてのデータをそこに入れるべきで" "しょうか?" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -18101,63 +18009,11 @@ msgstr "" "*wheel の* ``.data`` ディレクトリに置く形で配布されない時でさえも、 " "``pkgutil.get_data(package, resource)`` を使い続けても構わないのです。" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "なぜ wheel は添付された署名を持つのか?" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" -"添付された署名は、アーカイブと一体のものとして転送されるので、分離署名よりも" -"便利です。個々のファイルが署名されているだけなので、アーカイブを圧縮し直して" -"も署名が無効にならず、また、アーカイブ全体をダウンロードしなくても個々のファ" -"イルの検証を行うことができます。" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "なぜ wheel は JWS 署名を許容するのか?" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" -"JWS がその一部を構成する JOSE の仕様は実装を容易にするように設計されており、" -"その性質は wheel の基本的な設計目標のひとつでもあります。 JWS は使いやすくて" -"簡潔な純 Python の実装をもたらします。" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "なぜ wheel は S/MIME 署名をも許容するのか?" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" -"S/MIME 署名は、既存の公開鍵基盤を wheel でも採用する必要があるか、または、採" -"用したいユーザのために許容されています。" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" -"署名されたパッケージは、セキュアなパッケージ更新システムを構成するひとつのビ" -"ルディングブロックであるというだけのものです。 Wheel としては、単にビルディン" -"グブロックを提供するだけです。" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "\"pure lib\" と \"plat lib\" って、どう扱えばいいの?" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -18170,7 +18026,7 @@ msgstr "" "ムに依存しないパッケージを '/usr/lib64/pythonX.Y/site-packages' にインストー" "ルします。" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -18183,7 +18039,7 @@ msgstr "" "ルと相同であり、 \"purelib\" と \"platlib\" の両カテゴリにファイル群が存在す" "ることには問題がありません。" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " @@ -18193,13 +18049,13 @@ msgstr "" "\"purelib\" または \"platlib\" のいずれか一方しか持たず、 \"Root-Is-" "purelib\" を適切に設定しつつファイル群をルートディレクトリに置くべきです。" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" "Python のソースコードを wheel ファイルから直接にインポートすることはできます" "か?" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -18213,7 +18069,7 @@ msgstr "" "す* 。しかし、このような動作はフォーマット設計の自然な結果とはいうものの、実" "際にはこれに依存することは一般的には推奨されていません。" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -18231,7 +18087,7 @@ msgstr "" "を適切な場所に公開することによって C 言語拡張をビルドする標準的な機構を完全に" "統合する機能) への信頼を故意に避けることになります。" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -18264,7 +18120,7 @@ msgstr "" "イスは依然として実際にディスク上に存在するファイルがないと動作できないかもし" "れません。" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -18279,7 +18135,7 @@ msgstr "" "バグであると認めてもらう前に、多くのプロジェクトではそれを完全インストールの" "状態で再現するように要求されるであろうということを認識しておいてください。" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -18293,18 +18149,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "歴史" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "2013年2月: :pep:`427` を通じてこの仕様書が承認されました。" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." @@ -18312,7 +18168,7 @@ msgstr "" "2021年2月: 他の普及しているツールが実際にやるのと同じやり方に合わせて、 " "wheel のファイル名におけるエスケーピングの規則が修正されました。" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -18325,7 +18181,7 @@ msgstr "" "いての公式には定義されていないので、ツールが異なれば動作が異なるかもしれませ" "ん) 。" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " @@ -18334,7 +18190,7 @@ msgstr "" "2022年12月: :pep:`639` を通じて、 :file:`.dist-info/licenses/` ディレクトリが" "仕様化された。" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." @@ -18342,11 +18198,16 @@ msgstr "" "2025年1月: 名称とバージョン番号が ``.dist-info`` と ``.data`` のディレクトリ" "のために標準化される必要があると明確化された。" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" +"2026年1月: :pep:`815` で RECORD.jws および RECORD.p7s が非推奨になりました。" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "補遺" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "urlsafe-base64-nopad の実装の例::" @@ -19202,18 +19063,18 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" -"メタデータを処理する自動化ツールは、 ``metadata_version`` が自身のサポートす" -"る最大のものより大きい場合には警告を行うべきであり、かつ、 " -"``metadata_version`` が自身のサポートする最大のメジャーバージョンより大きいメ" -"ジャーバージョンを持つ場合には異常終了しなければなりません (:ref:`バージョン" -"指定子 ` に記述されている通り、メジャーバージョンとはバー" -"ジョンのうち最初のドットよりも前の部分です) 。" +"メタデータを処理する自動化ツールは、 ``metadata-version`` が自身のサポートす" +"る最大のものより大きい場合には警告を行うべきであり、かつ、 ``metadata-" +"version`` が自身のサポートする最大のメジャーバージョンより大きいメジャーバー" +"ジョンを持つ場合には異常終了しなければなりません (:ref:`バージョン指定子仕様 " +"` に記述されている通り、メジャーバージョンとはバージョン" +"のうち最初のドットよりも前の部分です) 。" #: ../source/specifications/core-metadata.rst:62 msgid "" @@ -21621,7 +21482,15 @@ msgstr "" "規表現が決定された (以前は ``\\Z`` の代わりに ``$`` で終端していたので、誤っ" "て後続する行末コード を許容していた)" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" +"2025年12月: あらゆる意味での同一性 の比較がパースされる" +"ことを許すために、 ``==`` より前に ``===`` を (評価することを) 確実に。" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" @@ -21629,11 +21498,11 @@ msgstr "" "Python のパッケージをインストールする際に推奨されるツールである pip (http://" "pip.readthedocs.org/en/stable/)" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "parsley PEG ライブラリ。 (https://pypi.python.org/pypi/parsley/)" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -24464,7 +24333,7 @@ msgstr "" "す。" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "推奨事項" @@ -29738,7 +29607,7 @@ msgstr "" "ンクされた理由を表現する任意の文字列です。" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -29770,7 +29639,8 @@ msgstr "" msgid "" "The format of the linked provenance is defined in :ref:`index-hosted-" "attestations`." -msgstr "リンクされた起源のフォーマットは、 :ref:`index-hosted-attestations` で定義さ" +msgstr "" +"リンクされた起源のフォーマットは、 :ref:`index-hosted-attestations` で定義さ" "れています。" #: ../source/specifications/simple-repository-api.rst:274 @@ -29792,11 +29662,12 @@ msgstr "" "カでなければ **なりません** 。" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." -msgstr "正当なプロジェクト状態マーカとそのセマンティクスの組は、 :ref:`project-" +msgstr "" +"正当なプロジェクト状態マーカとそのセマンティクスの組は、 :ref:`project-" "status-markers` に記述されています。" #: ../source/specifications/simple-repository-api.rst:288 @@ -30112,7 +29983,7 @@ msgstr "" "で、(そのキーの値は) プロジェクトの名称を表す文字列です。" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." @@ -30120,7 +29991,7 @@ msgstr "" "``meta``: `先述の通り `__ の一般的な応答メタデータ。" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "ひとつの例として:" @@ -30167,9 +30038,13 @@ msgstr "" "クトであれば ``/silly-walk/`` のような URL を持つことになるでしょう。" #: ../source/specifications/simple-repository-api.rst:480 +#, fuzzy +#| msgid "" +#| "This URL must respond with a JSON encoded dictionary that has four keys:" msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" -msgstr "この URL は、4個のキーを持つJSON にコード化された辞書を返さなければなりませ" +"This URL must respond with a JSON encoded dictionary that has five keys:" +msgstr "" +"この URL は、4個のキーを持つJSON にコード化された辞書を返さなければなりませ" "ん:" #: ../source/specifications/simple-repository-api.rst:482 @@ -30177,42 +30052,54 @@ msgid "``name``: The normalized name of the project." msgstr "``name``: そのプロジェクトの正規化された名前。" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." -msgstr "``files``: 辞書のリストで、各辞書が個別のファイルを表現しているもの。" - -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" -msgstr "一般的な応答メタデータに加えて、プロジェクト詳細の ``meta`` 辞書には、以下の" -"ものを含めても **構いません** :" +msgid "``project-status``: An optional dictionary, containing the following:" +msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." -msgstr "``project-status``: もし存在すれば、これは、正当なプロジェクト状態マーカで **" +#: ../source/specifications/simple-repository-api.rst:485 +#, fuzzy +#| msgid "" +#| "``project-status``: If present, this **MUST** be a valid project status " +#| "marker." +msgid "``status``: If present, this **MUST** be a valid project status marker." +msgstr "" +"``project-status``: もし存在すれば、これは、正当なプロジェクト状態マーカで **" "なければなりません** 。" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:494 +#, fuzzy +#| msgid "The ``project-status`` key was added with API version 1.4." +msgid "The ``status`` key was added with API version 1.4." msgstr "``project -status`` キーは、 API バージョン 1.4 で追加されました。" -#: ../source/specifications/simple-repository-api.rst:500 +#: ../source/specifications/simple-repository-api.rst:496 +#, fuzzy +#| msgid "" +#| "``project-status-reason``: If present, this **MUST** be an arbitrary " +#| "string description of the project status." msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" "``project-status-reason``: もし存在すれば、これは、任意の文字列でプロジェクト" "の状態を記述するもので **なければなりません** 。" +#: ../source/specifications/simple-repository-api.rst:501 +#, fuzzy +#| msgid "The ``versions`` key was added with API version 1.1." +msgid "The ``reason`` key was added with API version 1.4." +msgstr "``version`` キーは、 API バージョン 1.1 で追加されました。" + #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." -msgstr "``project-status-reason`` キーは、 API バージョン 1.4 で追加されました。" +msgid "The ``project-status`` key was added with API version 1.4." +msgstr "``project -status`` キーは、 API バージョン 1.4 で追加されました。" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "``files``: 辞書のリストで、各辞書が個別のファイルを表現しているもの。" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " @@ -30223,7 +30110,7 @@ msgstr "" "は、論理上は集合であり、それ故に重複を許さず、バージョン番号の順序は大きな問" "題ではありません。" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -30235,7 +30122,7 @@ msgstr "" "そのような概念を持っているならば、ファイルなしのバージョンというものを表現す" "るために) 対応するファイルがないバージョンを含んでいても構いません。" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -30244,28 +30131,29 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" ":ref:`バージョン指定子仕様 (VSS) ` の採用前からの \"レガ" -"シー\" データをサーバが保持しているかもしれないので、バージョン文字列について" -" VSS に則ったバージョンであることを要求することはできませんし、したがって、 " -"VSS のルールを使って並べることができると仮定することもできません。しかしなが" -"ら、サーバ側は、可能であれば正規化された VSS バージョンを **使うべきです** 。" +"シー\" データをサーバが保持しているかもしれないので、バージョン文字列につい" +"て VSS に則ったバージョンであることを要求することはできませんし、したがっ" +"て、 VSS のルールを使って並べることができると仮定することもできません。しかし" +"ながら、サーバ側は、可能であれば正規化された VSS バージョンを **使うべきです" +"** 。" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "``version`` キーは、 API バージョン 1.1 で追加されました。" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "個別のファイルを表す辞書は、それぞれ、次のキーを持ちます:" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "``filename``: 表現しようとしているファイルのファイル名。" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "``url``: そこからそのファイルを取得できる URL。" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -30280,7 +30168,7 @@ msgstr "" "になっています。これらのハッシュの名称は、常に小文字に **正規化 されているべ" "きです** 。" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " @@ -30291,7 +30179,7 @@ msgstr "" "用可能であることが保証されているハッシュが常に含まれていることが **とても強く" "** 推奨されています。" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -30307,7 +30195,7 @@ msgstr "" "セキュアなアルゴリズムが、常に、 **含まれているべきです** 。この仕様の時点で" "は、特に ``sha256`` が推奨されます。" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -30319,7 +30207,7 @@ msgstr "" "ル群は、要求事項を満足しない Python のバージョンへインストールしようとする場" "合、ダウンロードを **無視するべきです** 。" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " @@ -30329,7 +30217,7 @@ msgstr "" "requires-python`` とは異なって、 ``requires-python`` キーは、JSON が自然に要" "求することを除けば、特別なエスケープを要求しません。" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -30346,7 +30234,7 @@ msgstr "" "数にエンコードしたダイジェストへの対応をマッピングする辞書であるか、のいずれ" "かで **なければなりません** 。" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " @@ -30355,7 +30243,7 @@ msgstr "" "これがブーリアンの代わりにハッシュ辞書である時には、 ``hashes`` キーが true " "を値に取る場合と同じ要求事項と推奨事項の全てが、このキーにも課されます。" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " @@ -30365,7 +30253,7 @@ msgstr "" "ないかもしれません。このキーの値が真である場合はメタデータファイルが存在し、" "値が偽の場合には存在しません。" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." @@ -30373,14 +30261,15 @@ msgstr "" "サーバ群は、可能であれば、メタデータファイルのハッシュを利用可能とすることが" "推奨されています。" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." -msgstr "``dist-info-metadata``: **オプション** で、 ``core-metadata`` の非推奨になっ" +msgstr "" +"``dist-info-metadata``: **オプション** で、 ``core-metadata`` の非推奨になっ" "た別名。" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." @@ -30388,7 +30277,7 @@ msgstr "" "インデックスのクライアントは、もしこのキーが存在すれば、 ``core-metadata`` の" "レガシーなフォールバック先として、このキーを **消費しても構いません** 。" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." @@ -30396,7 +30285,7 @@ msgstr "" "``dist-info-metadata`` は、 :pep:`658` で標準化され、 :pep:`714` で ``core-" "metadata`` に名称変更されました。" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -30410,7 +30299,7 @@ msgstr "" "います。このキーが存在しない場合は、署名はあるかもしれませんし、ないかもしれ" "ません。" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -30422,21 +30311,22 @@ msgstr "" "``yanked``: **オプション** のキーで、当該ファイルがヤンクされたものか否かを示" "すブーリアンか、または、ファイルがヤンクされるに至った特定の理由を示す任意の" "空ではない文字列か、のいずれかの値を持ちます。 ``yanked`` キーが存在して値が" -"真のようであれば、``url`` フィールドによって指し示されるファイルが \"ヤンク\"" -" されたことを示すものと **理解されるべきです** 。" +"真のようであれば、``url`` フィールドによって指し示されるファイルが \"ヤンク" +"\" されたことを示すものと **理解されるべきです** 。" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." -msgstr "``size``: **必須の** キー。ファイルサイズをバイト単位で表した整数が **含まれ" +msgstr "" +"``size``: **必須の** キー。ファイルサイズをバイト単位で表した整数が **含まれ" "ていなければなりません** 。" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "``size`` キーは、 API バージョン 1.1 で追加されました。" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -30448,17 +30338,7 @@ msgstr "" "文字列が ``yyyy-mm-ddThh:mm:ss.ffffffZ`` の書式で **含まれていなければなりま" "せん** 。" -#: ../source/specifications/simple-repository-api.rst:614 -#, fuzzy -#| msgid "" -#| "``upload-time``: This field is optional. If present, it MUST contain a " -#| "valid ISO 8601 date/time string, in the format ``yyyy-mm-" -#| "ddThh:mm:ss.ffffffZ``, which represents the time the file was uploaded to " -#| "the index. As indicated by the ``Z`` suffix, the upload time MUST use the " -#| "UTC timezone. The fractional seconds part of the timestamp (the " -#| "``.ffffff`` part) is optional, and if present may contain up to 6 digits " -#| "of precision. If a server does not record upload time information for a " -#| "file, it MAY omit the ``upload-time`` key." +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -30466,32 +30346,34 @@ msgid "" "If a server does not record upload time information for a file, it **MAY** " "omit the ``upload-time`` key." msgstr "" -"``upload-time`` このフィールドはオプションです。もし存在するなら、正当な ISO " -"8601 形式の年月日・時刻が含まれていなければならず、そのフォーマットは ``yyyy-" -"mm-ddThh:mm:ss.ffffffZ`` で、当該ファイルがインデックスにアップロードされた時" -"点を表します。後置された ``Z`` が示すように、アップロード日時は必ず UTC タイ" -"ムゾーンを使わなければなりません。タイムスタンプの秒に満たない部分 " -"(``.ffffff`` の部分) はオプションで、もし存在するなら6桁までの精度を含めて構" -"いません。サーバ側がファイルのアップロード日時を記録していない場合は、 " -"``upload-time`` キーを省略しても構いません。" +"後置された ``Z`` が示すように、アップロード日時は必ず UTC タイムゾーンを **使" +"わなければなりません** 。タイムスタンプの秒に満たない部分 (``.ffffff`` の部" +"分) はオプションで、もし存在するなら6桁までの精度を含めて構いません。サーバ" +"側がファイルのアップロード日時を記録していない場合は、 ``upload-time`` キー" +"を **省略しても構いません** 。" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." -msgstr "" +msgstr "``upload-time`` キーは、 API バージョン 1.1 で追加されました。" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " "associated provenance, with the same rules as ``data-provenance`` in " "the :ref:`base HTML API specification `." msgstr "" +"``prevenance``: **オプションの** キーで、もし存在するなら JSON 文字列か、また" +"は、 ``null`` のいずれかで **なければなりません** 。もし ``null`` でないなら" +"ば、 :ref:`基本となる HTML API の仕様 ` 内の " +"``data-provenance`` と同様のルールで、ファイルに関連する起源への URL で **な" +"ければなりません** 。" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." -msgstr "" +msgstr "``provenance`` フィールドは、 API バージョン 1.3 で追加されました。" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -30578,11 +30460,11 @@ msgstr "" "をサポートするために、この仕様では、さらに、 ``text/html`` を ``application/" "vnd.pypi.simple.v1+html`` コンテント型へのエイリアスであると定義しています。" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "バージョン + フォーマットの選択" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -30596,7 +30478,7 @@ msgstr "" "ることなしに、どんな API の可能な新しいメジャーバージョンでも追加することがで" "きれば利益があることでしょう。" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_ の使用を標準化します。" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" @@ -30614,7 +30496,7 @@ msgstr "" "この仕様では、サーバ主導のコンテントネゴシエーションについて完全にすべてを記" "述することはありませんが、流れは大まかに次のようになります:" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." @@ -30622,7 +30504,7 @@ msgstr "" "理解できるコンテント型を全て``Accept`` ヘッダに列挙した HTTP リクエストをクラ" "イアントが作成します。" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " @@ -30632,7 +30514,7 @@ msgstr "" "のコンテント型を使って応答を返します (``Accept`` ヘッダが欠落している場合は " "``Accept: */*`` であるものとして扱います) 。" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " @@ -30642,7 +30524,7 @@ msgstr "" "は、どのように応答するかについてサーバは3個の異なるオプションから選択するこ" "とができます:" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." @@ -30650,7 +30532,7 @@ msgstr "" "クライアントが要求したものではないデフォルトのコンテント型を選択して、それを" "使って応答を返すこと。" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " @@ -30660,7 +30542,7 @@ msgstr "" "利用可能なものがないことを示し、サーバとしてはデフォルトのコンテント型を選択" "して応答することができないかしたくないことを示すこと。" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." @@ -30668,7 +30550,7 @@ msgstr "" "HTTP の ``300 Multiple Choices`` 応答を返して、選択できるかもしれないすべての" "可能な応答のリストを含めておくこと。" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." @@ -30676,7 +30558,7 @@ msgstr "" "サーバが返すかもしれない異なる応答のタイプを取り扱ってクライアントは応答を解" "釈します。" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -30688,7 +30570,7 @@ msgstr "" "アント側がそのクライアントにとって最も意味を為す方法であればどんなものでも可" "能な応答の全てを取り扱う準備を **しておくべきだ** とは指定しません。" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -30705,15 +30587,7 @@ msgstr "" "型を **理解できるであろう** とは思われず、したがって、この応答は ``406 Not " "Acceptable`` エラーと同じ扱いを受けるのが精々であろうと思われます。" -#: ../source/specifications/simple-repository-api.rst:755 -#, fuzzy -#| msgid "" -#| "This spec **does** require that if the meta version ``latest`` is being " -#| "used, the server **MUST** respond with the content type for the actual " -#| "version that is contained in the response (i.e. A ``Accept: application/" -#| "vnd.pypi.simple.latest+json`` request that returns a ``v1.x`` response " -#| "should have a ``Content-Type`` of ``application/" -#| "vnd.pypi.simple.v1+json``)." +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -30722,13 +30596,13 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" "この仕様では、メタバージョン ``latest`` が使われているのであれば、そのサーバ" -"は、実際のバージョンのための Content-Type をレスポンスの中に伴わなければなら" -"ないということを **要求しています** (すなわち、 ``Accept: application/" +"は、実際のバージョンのための Content-Type をレスポンスの中に **伴わなければな" +"らない** ということを **要求しています** (すなわち、 ``Accept: application/" "vnd.pypi.simple.latest+json`` を含んだリクエストが ``v1.x`` を返す時、レスポ" "ンスには ``application/vnd.pypi.simple.v1+json`` を値とする ``Content-Type`` " "が入っていなければならないということです) 。" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " @@ -30738,19 +30612,19 @@ msgstr "" "ンマで区切られたリストに列挙したものです。まさに要求されているところのコンテ" "ント型のそれぞれについて3個の異なるフォーマットをサポートしています:" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "``$type/$subtype``" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "``$type/*``" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "``*/*``" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " @@ -30760,7 +30634,7 @@ msgstr "" "も役に立つのは ``$type/$subtype`` で、望みのバージョンとフォーマットを実際に" "指定する唯一の方法だからです。" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -30776,7 +30650,7 @@ msgstr "" "developer.mozilla.org/en-US/docs/Glossary/Quality_values>`_ の文法を使っても" "構いません。" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -30791,7 +30665,7 @@ msgstr "" "(quality 値) のエントリがより低い品質のものよりも優先され、q 値を持たないもの" "はデフォルトで ``1`` であると解釈されます。" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -30803,7 +30677,7 @@ msgstr "" "** コンテント型で返答しても構わないということを、クライアントは心に留めておく" "べきです。" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -30821,11 +30695,11 @@ msgstr "" "_internal/index/collector.py#L123-L150>`_ を強制していますので、実際に何かを" "壊すリスクは低いでしょう。" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "クライアントがどのように運用できるかの例は次のように見えるでしょう:" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " @@ -30835,11 +30709,11 @@ msgstr "" "``Accept`` ヘッダから望まないコンテント型を単に取り除くでしょうし、(望まない" "ものを) 受け取ったらエラーにすることでしょう。" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "代わりの交渉機構 " -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -30853,18 +30727,21 @@ msgstr "" "そのような場合向けに、この仕様には、 *オプションとして* 代わりに使っても構わ" "ない代わりの交渉機構 があります。" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "URL パラメータ" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" +"シンプル API を実装するサーバは、クライアントが URL の特定のバージョンを要求" +"することを許すために、 ``format`` という名称の URL パラメータをサポートするこ" +"とを選択しても構いません。" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " @@ -30874,7 +30751,7 @@ msgstr "" "です。複数のコンテント型を渡すことやワイルドカード、quality 値などはサポート" "されて **いません** 。" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -30887,7 +30764,7 @@ msgstr "" "図したもの、ないし、説明文書やノートから特定の version+format にリンクするこ" "とができるようにすることを意図したものです。" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." @@ -30895,7 +30772,7 @@ msgstr "" "このパラメータをサポートしないサーバの側では、これの存在時にはエラーを返すこ" "とを選択しても構いませんし、単にその存在を無視しても構いません。" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -30912,11 +30789,11 @@ msgstr "" "``303 Multiple Choices`` 、ないし、応答のデフォルトの型) のどれでもひとつを選" "択しても構いません。" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "エンドポイントの設定" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " @@ -30926,7 +30803,7 @@ msgstr "" "エーションを使用することに伴う自然な結果であり、利用可能なコンテント型のいず" "れかを自身のデフォルトとしてサーバが選択することを許すものです。" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -30938,7 +30815,7 @@ msgstr "" "ように明示的に要求するのであれば、それはサポートされているコンフィグレーショ" "ンのひとつです。" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -30955,7 +30832,7 @@ msgstr "" "エストした時に、サーバはそれを無視して当該エンドポイントに対応するコンテント" "型を返すことができます。" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -30967,7 +30844,7 @@ msgstr "" "すし、そのサーバへのリクエストを作成する時に正しいコンテント型 **だけ** を含" "んだ ``Accept`` ヘッダを発出することができます。" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -30978,7 +30855,7 @@ msgstr "" "と仕様の執筆者たちが信じるものを表現していますが、しかし、これらの決定に合致" "させるための要求事項としてはいかなるものも **表現していません** 。" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -30991,11 +30868,11 @@ msgstr "" "択されています。加えて、クライアント側が最善の選択を行うようにと試みるガード" "レールを API が提供するように試みてきました。" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "サーバには次のことが推奨されます:" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " @@ -31005,7 +30882,7 @@ msgstr "" "くは、少なくとも HTML 応答を用いる非自明のトラフィックを受け取る限り、この仕" "様の中で記述される3個のコンテント型の全てをサポートすること。" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -31016,7 +30893,7 @@ msgstr "" "いような ``Accept`` ヘッダに遭遇した時、 ``300 Multiple Choice`` 応答を返すべ" "きではなく、その代わりに ``406 Not Acceptable`` 応答を返すべきです。" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." @@ -31025,7 +30902,7 @@ msgstr "" "そのエンドポイントが期待しているコンテント型で ``200 Ok`` を返したいと考える" "べきです。" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -31039,11 +30916,11 @@ msgstr "" "リクエストの特質を考慮に入れて、最も高いバージョンを選択するべきであり、 " "``text/html`` コンテント型の使用は最後の逃避先とするべきです。" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "クライアント側には次のことが推奨されます:" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." @@ -31051,7 +30928,7 @@ msgstr "" "それが合理的に実行可能である限り、サーバ側が駆動するコンテンツネゴシエーショ" "ンを使ってこの仕様に記述された3個のコンテント型の全てをサポートすること。" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." @@ -31059,7 +30936,7 @@ msgstr "" "``Accept`` ヘッダを構築する時、サポートしているコンテント型の全てを含めるこ" "と。" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -31073,7 +30950,7 @@ msgstr "" "コンテント型にはクオリティ優先度 を含めるべきではありませ" "ん。" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " @@ -31083,7 +30960,7 @@ msgstr "" "型であるという場合を除けば、伝統的な ``text/html`` コンテント型には " "``;q=0.01`` を含めることが推奨されるということです。" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." @@ -31091,7 +30968,7 @@ msgstr "" "通常操作では ``latest`` メタバージョンを使うのではなくて、希求しているバー" "ジョンがどれであるかを明示的に選択すること。" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." @@ -31099,19 +30976,19 @@ msgstr "" "応答の ``Content-Type`` を調べて、こちらが期待しているものに合致していること" "を確認すること。" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "2015年9月: :pep:`503` で HTML フォーマットの初期フォーム" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "2016年7月: :pep:`503` で Requires-Python メタデータ" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "2019年5月: :pep:`592` で \"ヤンク \" サポート" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" @@ -31119,14 +30996,14 @@ msgstr "" "2020年7月: :pep:`629` で、 API バージョン付け慣行とメタデータ、 HTML フォー" "マットを API v1.として宣言" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" "2021年5月: :pep:`658` で、パッケージとは独立にパッケージのメタデータを提供" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" @@ -31134,7 +31011,7 @@ msgstr "" "2022年5月: :pep:`691` により、クライアント側が選択する機構とともに JSON " "フォーマットの初期の形、両フォーマットを API v1 として宣言" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" @@ -31142,7 +31019,7 @@ msgstr "" "2022年10月: :pep:`700` により、 JSON フォーマットにおけるプロジェクトバージョ" "ン・ファイルサイズ・アップロード日時" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" @@ -31150,56 +31027,44 @@ msgstr "" "2023年6月: :pep:`714` により、パッケージから独立したパッケージメタデータを提" "供するフィールドを名称変更" -#: ../source/specifications/simple-repository-api.rst:987 -#, fuzzy -#| msgid "" -#| "October 2022: project versions and file size and upload-time in the JSON " -#| "format, in :pep:`700`" +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -"2022年10月: :pep:`700` により、 JSON フォーマットにおけるプロジェクトバージョ" -"ン・ファイルサイズ・アップロード日時" +"2024年11月: :pep:`740` によって、 HTML フォーマットおよびJSON フォーマットに" +"おける起源 メタデータ" -#: ../source/specifications/simple-repository-api.rst:988 -#, fuzzy -#| msgid "" -#| "October 2022: project versions and file size and upload-time in the JSON " -#| "format, in :pep:`700`" +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -"2022年10月: :pep:`700` により、 JSON フォーマットにおけるプロジェクトバージョ" -"ン・ファイルサイズ・アップロード日時" +"2025年7月: :pep:`792` によって、HTML フォーマットおよび JSON フォーマットにお" +"けるプロジェクトの状態マーカ" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" msgstr "" +"2025年7月: レイアウトの変更 (ファイルのヤンクのための専用のページ、 API の詳" +"細の前に概念を紹介)" #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "ソースコード配布物のフォーマット" #: ../source/specifications/source-distribution-format.rst:8 -#, fuzzy -#| msgid "" -#| "The current standard format of source distribution format is identified " -#| "by the presence of a :file:`pyproject.toml` file in the distribution " -#| "archive. The layout of such a distribution was originally specified " -#| "in :pep:`517` and is formally documented here." msgid "" "The current standard source distribution format is identified by the " "presence of a :file:`pyproject.toml` file in the distribution archive. The " "layout of such a distribution was originally specified in :pep:`517` and is " "formally documented here." msgstr "" -"ソースコード配布物のフォーマットに関する現在の標準フォーマットは、配布物の" -"アーカイブに :file:`pyproject.toml` ファイルが存在することで識別されます。そ" -"のような配布物のレイアウトは元々は :pep:`517` で指定され、ここに公式にドキュ" -"メント化されています。" +"ソースコード配布物に関する現在の標準フォーマットは、配布物アーカイブ" +"に :file:`pyproject.toml` ファイルが存在することで識別されます。そのような配" +"布物のレイアウトは元々は :pep:`517` で指定され、ここに公式にドキュメント化さ" +"れています。" #: ../source/specifications/source-distribution-format.rst:13 msgid "" @@ -31228,15 +31093,6 @@ msgid "Source trees" msgstr "ソースコードツリー" #: ../source/specifications/source-distribution-format.rst:28 -#, fuzzy -#| msgid "" -#| "A *source tree* is a collection of files and directories -- like a " -#| "version control system checkout -- which contains " -#| "a :file:`pyproject.toml` file that can be use to build a source " -#| "distribution from the contained files and directories. :pep:`517` " -#| "and :pep:`518` specify what is required to meet the definition of " -#| "what :file:`pyproject.toml` must contain for something to be deemed a " -#| "source tree." msgid "" "A *source tree* is a collection of files and directories -- like a version " "control system checkout -- which contains a :file:`pyproject.toml` file that " @@ -31245,13 +31101,12 @@ msgid "" "definition of what :file:`pyproject.toml` must contain for something to be " "deemed a source tree." msgstr "" -"*ソースツリー* は、 -- バージョン管理システムからのチェックアウトのような -- " -"ファイルとディレクトリの集合で、その中に書かれたファイルやディレクトリから" -"ソースコード配布物をビルドすることができるような :file:`pyproject.toml` ファ" -"イルを含んでいるものです。何かをソースコードツリーであると見做すため" -"に :file:`pyproject.toml` ファイルが含んでいなければならないものが何であるか" -"の定義に合致するために要求されることは何であるかについては :pep:`517` " -"と :pep:`518` が指定しています。" +"*ソースコードツリー* は、 -- バージョン管理システムのチェックアウトのような " +"-- ファイルとディレクトリの集合体で、含まれるファイルやディレクトリからソース" +"コード配布物を作るために使われた :file:`pyproject.toml` ファイルを含んでいる" +"ものです。 :pep:`517` と :pep:`518` は、何者かをソースコードツリーであると見" +"做すために :file:`pyproject.toml` が何を含んでいなければならないかの定義に合" +"致するために要求されるものを指定しています。" #: ../source/specifications/source-distribution-format.rst:38 msgid "Source distribution file name" @@ -31309,16 +31164,6 @@ msgid "Source distribution file format" msgstr "ソースコード配布物のファイルフォーマット" #: ../source/specifications/source-distribution-format.rst:61 -#, fuzzy -#| msgid "" -#| "A ``.tar.gz`` source distribution (sdist) contains a single top-level " -#| "directory called ``{name}-{version}`` (e.g. ``foo-1.0``), containing the " -#| "source files of the package. The name and version MUST match the metadata " -#| "stored in the file. This directory must also contain " -#| "a :file:`pyproject.toml` in the format defined in :ref:`pyproject-toml-" -#| "spec`, and a ``PKG-INFO`` file containing metadata in the format " -#| "described in the :ref:`core-metadata` specification. The metadata MUST " -#| "conform to at least version 2.2 of the metadata specification." msgid "" "A ``.tar.gz`` source distribution (sdist) contains a single top-level " "directory called ``{name}-{version}`` (e.g. ``foo-1.0``), containing the " @@ -31335,9 +31180,9 @@ msgstr "" "のメタデータと合致していなければなりません。このディレクトリ" "は、 :ref:`pyproject-toml-spec` で定義されたフォーマットで書かれ" "た :file:`pyproject.toml` ファイルや、 :ref:`core-metadata` 仕様内に記述され" -"たフォーマットで書かれたメタデータを含んだ ``PKG-INFO`` ファイルも含んでいな" -"ければなりません。このようなメタデータは、少なくともバージョン 2.2 のメタデー" -"タ仕様を満足するものでなければなりません。" +"たフォーマットで書かれたメタデータを含んだ :file:`PKG-INFO` ファイルも含んで" +"いなければなりません。このようなメタデータは、少なくともバージョン 2.2 のメタ" +"データ仕様を満足するものでなければなりません。" #: ../source/specifications/source-distribution-format.rst:69 msgid "" @@ -31347,6 +31192,11 @@ msgid "" "directory of the sdist (containing the :file:`pyproject.toml` and " "the :file:`PKG-INFO` metadata)." msgstr "" +"メタデータのバージョンが 2.4 またはそれ以降であれば、ソースコード配布物は、 " +"(:file:`pyproject.toml` と :file:`PKG-INFO` のメタデータを内包する) sdist の" +"ルートディレクトリに対する相対パスでそれぞれのパスを示す形で :file:`PKG-" +"INFO` の中の ``License-File`` フィールドによって指定されたライセンスファイル" +"を一つ以上含んでいなければなりません。" #: ../source/specifications/source-distribution-format.rst:74 msgid "" @@ -31569,15 +31419,12 @@ msgstr "" "標準化された。" #: ../source/specifications/source-distribution-format.rst:162 -#, fuzzy -#| msgid "" -#| "September 2022: The filename of a source distribution was standardized " -#| "through :pep:`625`." msgid "" "December 2024: License files inclusion into source distribution was " "standardized through :pep:`639`." msgstr "" -"2022年9月: :pep:`625` を通じて、ソースコード配布物のファイル名を標準化した。" +"2024年12月: :pep:`639` を通じて、ライセンスファイルのソースコード配布物への包" +"含が標準化されました。" #: ../source/specifications/version-specifiers.rst:7 #: ../source/specifications/version-specifiers.rst:785 @@ -32028,10 +31875,6 @@ msgstr "" "``X.Y.0`` は、相異なるリリース番号とは見做されません。" #: ../source/specifications/version-specifiers.rst:229 -#, fuzzy -#| msgid "" -#| "Date based release segments are also permitted. An example of a date " -#| "based release scheme using the year and month of the release::" msgid "" "Date-based release segments are also permitted. An example of a date-based " "release scheme using the year and month of the release::" @@ -32233,15 +32076,10 @@ msgstr "" "開発リリースは、また、プレリリースやポストリリースにおいても許されます::" #: ../source/specifications/version-specifiers.rst:346 -#, fuzzy -#| msgid "" -#| "Developmental releases are also permitted for pre-releases and post-" -#| "releases::" msgid "" "Do note that development releases are considered a type of pre-release when " "handling them." -msgstr "" -"開発リリースは、また、プレリリースやポストリリースにおいても許されます::" +msgstr "開発リリースは、それを取り扱う時にはプレリリースの一種と見做されます。" #: ../source/specifications/version-specifiers.rst:351 msgid "" @@ -33359,15 +33197,19 @@ msgstr "あらゆる意味での同一性 " msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" "あらゆる意味での同一性比較は、ゼロパディングやローカルバージョンのような意味" -"論的な情報を全く考慮しない単純な文字列の同一性演算です。この演算子は、また、 " -"``==`` 演算子なら実行するようなプレフィクスのマッチングもサポートしていませ" -"ん。" +"論的な情報を全く考慮しない単純な文字列の同一性演算です。この比較は、 例えば小" +"文字に揃えるなどして大文字小文字を区別しないASCII 文字として取り扱われなけれ" +"ばなりませんが、非 ASCII 文字については仕様化されていません。この演算子は、ま" +"た、 ``==`` 演算子なら実行するようなプレフィクスのマッチングもサポートしてい" +"ません。" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -33381,14 +33223,14 @@ msgstr "" "ればこの仕様とは非互換になってしまうようなレガシーなバージョンを、それでもイ" "ンストールすることができる脱出ハッチとして振舞います。" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" "一つの例としては、``foobar`` というバージョン番号に合致するであろう " "``==foobar`` ということになるでしょう。" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " @@ -33398,7 +33240,7 @@ msgstr "" "うと思われる、 ``===1.0`` のようなプロジェクトのパッチ適用のないバージョンを" "明示的に要求するためにも使われます。" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." @@ -33406,11 +33248,11 @@ msgstr "" "この演算子の使用は強い非推奨の状態にあり、使用に際してはツール類は警告を表示" "しても構いません。" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "プレリリースの取り扱い " -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -33422,18 +33264,18 @@ msgstr "" "か、の *いずれかでない限り* 、開発リリースを含むプレリリースは、どんな種類で" "も、あらゆるバージョン指定子から暗黙裡に除外されます。" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" "デフォルトでは、依存関係を解決しようとするツール類は以下のことを行うべきです:" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" "全てのバージョン指定子向けにすでにインストールされているプレリリースを受け入" "れる" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" @@ -33442,11 +33284,11 @@ msgstr "" "モートサイトにあって利用可能なプレリリースを、バージョン指定子として受け入れ" "る" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "他のすべてのプレリリースを考慮の対象から除外する" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." @@ -33454,7 +33296,7 @@ msgstr "" "依存関係解決ツール群は、バージョン指定子を満足させるためにあるプレリリースが" "必要である場合には、警告を発しても構いません。" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" @@ -33462,11 +33304,11 @@ msgstr "" "依存関係解決ツール群は、また、以下のような代替的な振る舞いをユーザが要求する" "ことを許容するべきです:" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "全てのバージョン指定子にプレリリースを受け入れること" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " @@ -33476,7 +33318,7 @@ msgstr "" "ローカルにインストールされている場合や特定の指定子を満たすためにはプレリリー" "スが唯一の選択肢である場合には、エラーないし警告を報告すること)" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." @@ -33484,7 +33326,7 @@ msgstr "" "依存関係解決ツール群は、配布物の単位ごとに上記の振る舞いを許容しても構いませ" "ん。" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." @@ -33492,25 +33334,25 @@ msgstr "" "ポストリリースと最終リリースは、バージョン識別子の中で何ら特別な取り扱いを受" "けません - 明示的に除外されていない限り、これらは常に受け入れられます。" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" "``~=3.1``: バージョン 3.1 またはそれ以降、しかし、バージョン 4.0 またはそれ以" "降ではない。" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" "``~=3.1.2``: バージョン 3.1.2 またはそれ以降、しかし、バージョン 3.2.0 または" "それ以降ではない。" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" "``~=3.1a1``: バージョン 3.1a1 またはそれ以降、しかし、バージョン 4.0 またはそ" "れ以降ではない。" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." @@ -33518,7 +33360,7 @@ msgstr "" "``== 3.1``: 正確にバージョン 3.1 (または 3.1.0)、プレリリース・ポストリリー" "ス・開発リリースや 3.1.x のメンテナンスリリースは全て除外する。" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." @@ -33526,7 +33368,7 @@ msgstr "" "``== 3.1.*``: 3.1 で始まるすべてのバージョン。 ``~=3.1.0`` 互換リリース節に同" "じ。" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." @@ -33534,11 +33376,11 @@ msgstr "" "``~=3.1.0, != 3.1.3``: バージョン 3.1.0 またはそれ以降、しかし、バージョン " "3.1.3 ではなく、バージョン 3.2.0 またはそれ以降でもない。" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "直接参照" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " @@ -33548,7 +33390,7 @@ msgstr "" "ものがあります。直接参照は、それを指定する ``@`` と明示された URL から構成さ" "れます。" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -33559,7 +33401,7 @@ msgstr "" "存します。自動化ツール群は、少なくとも警告を発行するべきで、直接参照が不適切" "に使われた場合には全体を拒否しても構いません。" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " @@ -33569,7 +33411,7 @@ msgstr "" "すべきではありません。直接参照は、公開者 向けではなくてソフト" "ウェアインテグレータ向けのツールとして意図されたものです。" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " @@ -33579,16 +33421,16 @@ msgstr "" "バイナリアーカイブでしょう。正確な URL やターゲットのサポートがあるかどうかは" "ツール次第です。" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" "例えば、ローカルのソースコードアーカイブが直接に参照されるかもしれません::" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "あるいは、ビルド済みのアーカイブが参照されるかもしれません::" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -33608,7 +33450,7 @@ msgstr "" "することを拒否しても構いません。もしそのような直接参照が安全でない転送手段を" "使っているなら、自動化ツールはその URL に依存するべきではありません。" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -33621,7 +33463,7 @@ msgstr "" "ことを推奨します。本文書の執筆時点では、 'md5' ・ 'sha1' ・ 'sha224' ・ " "'sha256' ・ 'sha384' ・ 'sha512' が該当します。" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " @@ -33631,7 +33473,7 @@ msgstr "" "URL の一部として ``=`` エントリに含まれる形で" "指定されるでしょう。" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -33645,7 +33487,7 @@ msgstr "" "す。自動化ツール群は、ハッシュ値で表したコミット識別子を持たないバージョン管" "理システムではハッシュ値がなくても警告を省略しても構いません。" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -33657,7 +33499,7 @@ msgstr "" "タグ>#<コミットのハッシュ値>`` という表記方法を用いて URL の末尾に追加しても" "構いません。" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -33675,15 +33517,15 @@ msgstr "" "シュ値が含まれているべきであるという要求に従うために、コミットのハッシュ値が" "含まれています。" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "リモート URL の例::" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "ファイルを指す URL 群" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -33695,7 +33537,7 @@ msgstr "" "であってさえも3個目のスラッシュが存在していなければなりません。 ```` " "は、これからアクセスされるであろうファイルシステム上のファイルパスです。" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -33707,7 +33549,7 @@ msgstr "" "の FQDN です。換言すれば、 \\*nix 上では、ローカルマシン上のパスにアクセスす" "るための ``file://`` スキームだけが使用可能であるということです。" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -33728,18 +33570,22 @@ msgstr "" "web.archive.org/web/20130321051043/http://blogs.msdn.com/b/ie/archive/" "2006/12/06/file-uris-in-windows.aspx>`_ を見てください。" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "pkg_resources.parse_version からの相違点のまとめ" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" +"ノート: この比較は、 :pep:`440` が書かれた時点で存在していたように、 " +"``pkg_resources.parse_version`` に向けたものです。 PEP が受け入れられた後、 " +"setuptools 6.0 およびそれ以降のバージョンは、ここで記述された動作を採用してい" +"ます。" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " @@ -33750,7 +33596,7 @@ msgstr "" "いますが、他方で、 ``pkg_resources.parse_version`` はそれ (訳註、ローカルバー" "ジョン) をプレリリースのマーカーの一つであると見做しています。" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " @@ -33760,7 +33606,7 @@ msgstr "" "他方で ``pkg_resources.parse_version`` では *あらゆる* 任意の文字列から何らか" "の意味を汲み取るように試みます。" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " @@ -33771,11 +33617,11 @@ msgstr "" "は、それぞれのタイプが高々一度だけ使われることと、ある順番に従って存在してい" "ることを許容しているだけです。" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "補遺: 正規表現を伴うバージョン文字列を解析する" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -33789,7 +33635,7 @@ msgstr "" "し否であればその後の標準化のためにさまざまな構成要素を引き出すために使うこと" "ができる、そのような正規表現を提供します。" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" @@ -33797,7 +33643,7 @@ msgstr "" "バージョン識別子が正統な書式であるか否かを確かめるためには、次の関数を使うこ" "とができます:" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ プロジェクトによって定" "義されたもの):" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "2014年8月: :pep:`440` を通じてこの仕様が承認された。" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +"2025年5月: 開発リリースは、それが取り扱われるときにはプレリリースのひとつの形" +"態であることを明確にしました。" + +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" +"2025年11月: あらゆる意味での同一性 では大文字小文字を区" +"別しないことを明示しました。" #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" @@ -33927,10 +33781,8 @@ msgid "May 2012: This specification was approved through :pep:`405`." msgstr "2012年5月: :pep:`405` を通じてこの仕様が承認されました。" #: ../source/specifications/well-known-project-urls.rst:5 -#, fuzzy -#| msgid "Pyproject Metadata" msgid "Well-known Project URLs in Metadata" -msgstr "Pyproject のメタデータ" +msgstr "メタデータ内のよく知られたプロジェクト URL" #: ../source/specifications/well-known-project-urls.rst:9 msgid "" @@ -33938,6 +33790,10 @@ msgid "" "use the normalization rules and well-known list below to make their " "presentation of project URLs consistent across the Python ecosystem." msgstr "" +"この説明文書は、一義的にはメタデータの *コンシューマ* 、コンシューマはPython " +"エコシステムを通じて一貫性のある形でプロジェクト URL を提示させるために標準化" +"ルールや後述のよく知られたリストを使用するべきですが、そのコンシューマに着目" +"しています。" #: ../source/specifications/well-known-project-urls.rst:14 msgid "" @@ -33946,6 +33802,11 @@ msgid "" "``Project-URL`` length restrictions. However, when possible, users are " "*encouraged* to pick meaningful labels that normalize to well-known labels." msgstr "" +"(ビルドツール類や個々のパッケージ保守者のような) メタデータの *プロデューサ* " +"は、全体的な ``Project-URL`` の長さ制限の範囲内であれば、好きなラベルを使用し" +"続けても構いません。しかしながら、可能であるときには、ユーザは理解しやすいラ" +"ベルでよく知られたラベルに標準化されたものを選択することを *推奨されています" +"* 。" #: ../source/specifications/well-known-project-urls.rst:22 msgid "" @@ -33953,13 +33814,13 @@ msgid "" "for user-oriented guidance on choosing project URL labels in your package's " "metadata." msgstr "" +"パッケージのメタデータの中のプロジェクト URL ラベルを選択することについての" +"ユーザ指向のガイダンスについては、 :ref:`pyproject.toml を書く- urls " +"` を見てください。" #: ../source/specifications/well-known-project-urls.rst:26 -#, fuzzy -#| msgid "" -#| "This specification was originally defined in :pep:`518` and :pep:`621`." msgid "This specification was originally defined in :pep:`753`." -msgstr "この仕様は、元々は :pep:`518` 及び :pep:`621` で定義されました。" +msgstr "この仕様は、元々は :pep:`753` で定義されました。" #: ../source/specifications/well-known-project-urls.rst:28 msgid "" @@ -33970,24 +33831,33 @@ msgid "" "semantics assigned to ``Home-page``, ``Download-URL``, or other common " "project URLs." msgstr "" +":pep:`753` は、 :ref:`core-metadata-project-url` に従って :ref:`core-" +"metadata-home-page` と :ref:`core-metadata-download-url` のメタデータフィール" +"ドを非推奨とし、 ``Project-URL`` が \"よく知られた\" ものであるかどうか、つま" +"り、 ``Home-page`` ・ ``Download-URL`` やその他の一般的なプロジェクト URL に" +"指定されるセマンティクスを持っているかどうかを決定するための、正規化とルック" +"アップの手続きを定義しました。" #: ../source/specifications/well-known-project-urls.rst:35 msgid "" "This allows indices (such as the Python Package Index) and other downstream " "metadata consumers to present project URLs in a consistent manner." msgstr "" +"これによって、 (Python Package Index のような) インデックスや他のダウンスト" +"リーム側メタデータコンシューマが首尾一貫したやり方でプロジェクト URL を提示す" +"ることができます。" #: ../source/specifications/well-known-project-urls.rst:42 -#, fuzzy -#| msgid "Name normalization" msgid "Label normalization" -msgstr "名前の正規化" +msgstr "ラベルの正規化" #: ../source/specifications/well-known-project-urls.rst:46 msgid "" "Label normalization is performed by metadata *consumers*, not metadata " "producers." msgstr "" +"ラベル正規化は、メタデータの *コンシューマ* によって行われるのであって、メタ" +"データプロデューサによってではありません。" #: ../source/specifications/well-known-project-urls.rst:49 msgid "" @@ -33995,236 +33865,230 @@ msgid "" "consumers should normalize the label before comparing it to the :ref:`list " "of well-known labels `." msgstr "" +"``Project-URL`` ラベルが \"よく知られた\" ものであるかどうかを決定するために" +"は、メタデータのコンシューマは、そのラベルを :ref:`よく知られたラベルのリス" +"ト ` と比較する前に、そのラベルを正規化するべきです。" #: ../source/specifications/well-known-project-urls.rst:53 msgid "" "The normalization procedure for ``Project-URL`` labels is defined by the " "following Python function:" msgstr "" +"``Project-URL`` ラベルの正規化の手続きは、次に示す Python 関数で定義されてい" +"ます:" #: ../source/specifications/well-known-project-urls.rst:65 msgid "" "In plain language: a label is *normalized* by deleting all ASCII punctuation " "and whitespace, and then converting the result to lowercase." msgstr "" +"プレーンな言語では: ラベルは、 ASCII の句読点と空白文字をすべて取り除き、その" +"結果を小文字に変換することで *正規化* されます。" #: ../source/specifications/well-known-project-urls.rst:68 msgid "" "The following table shows examples of labels before (raw) and after " "normalization:" -msgstr "" +msgstr "次に示すテーブルでは、ラベルの正規化の前 (生) と後の例をお見せします:" #: ../source/specifications/well-known-project-urls.rst:74 msgid "Raw" -msgstr "" +msgstr "生" #: ../source/specifications/well-known-project-urls.rst:75 -#, fuzzy -#| msgid "Normalized Names" msgid "Normalized" -msgstr "正規化された名称" +msgstr "正規化後" #: ../source/specifications/well-known-project-urls.rst:76 -#, fuzzy -#| msgid "Home-page" msgid "``Homepage``" -msgstr "Home-page" +msgstr "``Homepage``" #: ../source/specifications/well-known-project-urls.rst:77 #: ../source/specifications/well-known-project-urls.rst:79 #: ../source/specifications/well-known-project-urls.rst:81 -#, fuzzy -#| msgid "Home-page" msgid "``homepage``" -msgstr "Home-page" +msgstr "``homepage``" #: ../source/specifications/well-known-project-urls.rst:78 -#, fuzzy -#| msgid "Home-page" msgid "``Home-page``" -msgstr "Home-page" +msgstr "``Home-page``" #: ../source/specifications/well-known-project-urls.rst:80 -#, fuzzy -#| msgid "Home page" msgid "``Home page``" -msgstr "ホームページ" +msgstr "``Home page``" #: ../source/specifications/well-known-project-urls.rst:82 msgid "``Change_Log``" -msgstr "" +msgstr "``Change_Log``" #: ../source/specifications/well-known-project-urls.rst:83 msgid "``changelog``" -msgstr "" +msgstr "``changelog``" #: ../source/specifications/well-known-project-urls.rst:84 msgid "``What's New?``" -msgstr "" +msgstr "``What's New?``" #: ../source/specifications/well-known-project-urls.rst:85 msgid "``whatsnew``" -msgstr "" +msgstr "``whatsnew``" #: ../source/specifications/well-known-project-urls.rst:86 #: ../source/specifications/well-known-project-urls.rst:87 msgid "``github``" -msgstr "" +msgstr "``github``" #: ../source/specifications/well-known-project-urls.rst:92 msgid "Well-known labels" -msgstr "" +msgstr "よく知られたラベル" #: ../source/specifications/well-known-project-urls.rst:96 msgid "" "The list of well-known labels is a living standard, maintained as part of " "this document." msgstr "" +"よく知られたラベルのリストは、成長し続ける標準で、この説明文書の一部として維" +"持管理されます。" #: ../source/specifications/well-known-project-urls.rst:99 msgid "" "The following table lists labels that are well-known for the purpose of " "specializing the presentation of ``Project-URL`` metadata:" msgstr "" +"以下のテーブルでは、 ``Project-URL`` メタデータの表示を特別なものにする目的の" +"ためによく知られたラベルを列挙します:" #: ../source/specifications/well-known-project-urls.rst:105 msgid "Label (Human-readable equivalent)" -msgstr "" +msgstr "ラベル (人間が読む時用の同等物)" #: ../source/specifications/well-known-project-urls.rst:107 msgid "Aliases" -msgstr "" +msgstr "別名" #: ../source/specifications/well-known-project-urls.rst:108 msgid "``homepage`` (Homepage)" -msgstr "" +msgstr "``homepage`` (Homepage)" #: ../source/specifications/well-known-project-urls.rst:109 msgid "The project's home page" -msgstr "" +msgstr "プロジェクトのホームページ" #: ../source/specifications/well-known-project-urls.rst:110 #: ../source/specifications/well-known-project-urls.rst:116 #: ../source/specifications/well-known-project-urls.rst:122 msgid "*(none)*" -msgstr "" +msgstr "*(none)*" #: ../source/specifications/well-known-project-urls.rst:111 msgid "``source`` (Source Code)" -msgstr "" +msgstr "``source`` (Source Code)" #: ../source/specifications/well-known-project-urls.rst:112 msgid "The project's hosted source code or repository" -msgstr "" +msgstr "プロジェクトのホストされたソースコードまたはリポジトリ" #: ../source/specifications/well-known-project-urls.rst:113 msgid "``repository``, ``sourcecode``, ``github``" -msgstr "" +msgstr "``repository``, ``sourcecode``, ``github``" #: ../source/specifications/well-known-project-urls.rst:114 msgid "``download`` (Download)" -msgstr "" +msgstr "``download`` (Download)" #: ../source/specifications/well-known-project-urls.rst:115 msgid "" "A download URL for the current distribution, equivalent to ``Download-URL``" -msgstr "" +msgstr "最新の配布物のダウンロード URL で、 ``Download-URL`` と同等" #: ../source/specifications/well-known-project-urls.rst:117 msgid "``changelog`` (Changelog)" -msgstr "" +msgstr "``changelog`` (Changelog)" #: ../source/specifications/well-known-project-urls.rst:118 msgid "The project's comprehensive changelog" -msgstr "" +msgstr "プロジェクトの網羅的な変更履歴" #: ../source/specifications/well-known-project-urls.rst:119 msgid "``changes``, ``whatsnew``, ``history``" -msgstr "" +msgstr "``changes``, ``whatsnew``, ``history``" #: ../source/specifications/well-known-project-urls.rst:120 msgid "``releasenotes`` (Release Notes)" -msgstr "" +msgstr "``releasenotes`` (Release Notes)" #: ../source/specifications/well-known-project-urls.rst:121 msgid "The project's curated release notes" -msgstr "" +msgstr "プロジェクトの精査されたリリースノート" #: ../source/specifications/well-known-project-urls.rst:123 -#, fuzzy -#| msgid "Creating documentation" msgid "``documentation`` (Documentation)" -msgstr "説明文書を作成する" +msgstr "``documentation`` (Documentation)" #: ../source/specifications/well-known-project-urls.rst:124 -#, fuzzy -#| msgid "Creating documentation" msgid "The project's online documentation" -msgstr "説明文書を作成する" +msgstr "プロジェクトのオンライン説明文書" #: ../source/specifications/well-known-project-urls.rst:125 -#, fuzzy -#| msgid "``upload_docs``" msgid "``docs``" -msgstr "``upload_docs``" +msgstr "``docs``" #: ../source/specifications/well-known-project-urls.rst:126 msgid "``issues`` (Issue Tracker)" -msgstr "" +msgstr "``issues`` (Issue Tracker)" #: ../source/specifications/well-known-project-urls.rst:127 msgid "The project's bug tracker" -msgstr "" +msgstr "プロジェクトのバグ追跡システム" #: ../source/specifications/well-known-project-urls.rst:128 msgid "``bugs``, ``issue``, ``tracker``, ``issuetracker``, ``bugtracker``" -msgstr "" +msgstr "``bugs``, ``issue``, ``tracker``, ``issuetracker``, ``bugtracker``" #: ../source/specifications/well-known-project-urls.rst:129 msgid "``funding`` (Funding)" -msgstr "" +msgstr "``funding`` (Funding)" #: ../source/specifications/well-known-project-urls.rst:130 -#, fuzzy -#| msgid "Basic information" msgid "Funding Information" -msgstr "基本的な情報" +msgstr "財政支援のための情報" #: ../source/specifications/well-known-project-urls.rst:131 msgid "``sponsor``, ``donate``, ``donation``" -msgstr "" +msgstr "``sponsor``, ``donate``, ``donation``" #: ../source/specifications/well-known-project-urls.rst:133 msgid "" "Package metadata consumers may choose to render aliased labels the same as " "their \"parent\" well known label, or further specialize them." msgstr "" +"パッケージメタデータのコンシューマは、別名で表現されたラベルをその \"親\" の" +"よく知られたラベルと同様に展開することや、または、それらをさらに詳しく指定す" +"ることを選択しても構いません。" #: ../source/specifications/well-known-project-urls.rst:137 -#, fuzzy -#| msgid "Example" msgid "Example behavior" -msgstr "例" +msgstr "振る舞いの例" #: ../source/specifications/well-known-project-urls.rst:139 msgid "" "The following shows the flow of project URL metadata from ``pyproject.toml`` " "to core metadata to a potential index presentation:" msgstr "" +"以下では、 ``pyproject.toml`` からのプロジェクト URL メタデータを コアとなる" +"メタデータへ、さらに潜在的なインデックスへと表現する流れを示します:" #: ../source/specifications/well-known-project-urls.rst:142 msgid "Example project URLs in standard configuration" -msgstr "" +msgstr "標準設定でのプロジェクト URL の例" #: ../source/specifications/well-known-project-urls.rst:151 -#, fuzzy -#| msgid "Core metadata specifications" msgid "Core metadata representation" -msgstr "コアとなるメタデータの仕様" +msgstr "コアとなるメタデータの表現" #: ../source/specifications/well-known-project-urls.rst:159 msgid "Potential rendering" -msgstr "" +msgstr "潜在的な展開" #: ../source/specifications/well-known-project-urls.rst:167 msgid "" @@ -34233,27 +34097,36 @@ msgid "" "*consumer* normalizes and identifies appropriate human-readable equivalents " "based on the normalized form:" msgstr "" +"(メタデータの *プロデューサ* は正規化を実行しないので) コアとなるメタデータが" +"ユーザによって提供されたフォームの中に出現したことを観測し、しかし、メタデー" +"タの *コンシューマ* が正規化し、正規化すみフォームに基づいて適切な人間の読め" +"る形の同等物を特定する:" #: ../source/specifications/well-known-project-urls.rst:172 msgid "``Home page`` becomes ``homepage``, which is rendered as ``Homepage``" -msgstr "" +msgstr "``Home page`` は ``homepage`` となり、それは ``Homepage`` に展開される" #: ../source/specifications/well-known-project-urls.rst:173 msgid "" "``DOCUMENTATION`` becomes ``documentation``, which is rendered as " "``Documentation``" msgstr "" +"``DOCUMENTATION`` は ``documentation`` となり、それは ``Documentation`` に展" +"開される" #: ../source/specifications/well-known-project-urls.rst:174 msgid "" "``Repository`` becomes ``repository``, which is rendered as ``Source Code``" msgstr "" +"``Repository`` は ``repository`` となり、 ``Source Code`` として展開されます" #: ../source/specifications/well-known-project-urls.rst:175 msgid "" "``GitHub`` becomes ``github``, which is rendered as ``Source Code (GitHub)`` " "(as a specialization of ``Source Code``)" msgstr "" +"``GitHub`` は ``github`` となり、 (``Source Code`` の特定の形として) " +"``Source Code (GitHub)`` に展開される" #: ../source/support.rst:3 msgid "How to Get Support" @@ -34622,12 +34495,6 @@ msgstr "" "ました) 。" #: ../source/tutorials/installing-packages.rst:229 -#, fuzzy -#| msgid "" -#| ":ref:`virtualenv` needs to be installed separately, but supports Python " -#| "2.7+ and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` " -#| "are always installed into created virtual environments by default " -#| "(regardless of Python version)." msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -34636,9 +34503,10 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" ":ref:`virtualenv` は別途インストールする必要がありますが、 Python 2.7+ と " -"Python 3.3+ をサポートしており、 :ref:`pip` ・ :ref:`setuptools` " -"・ :ref:`wheel` を作成された仮想環境に常にデフォルト (Python のバージョンに関" -"係なく) でインストールします。" +"Python 3.3+ をサポートしており、デフォルトで :ref:`pip` ・ :ref:`setuptools` " +"・ :ref:`wheel` を作成した仮想環境にインストールします。 Python 3.12 以降は、" +"デフォルトでは ``setuptools`` が最早含まれていないこと (そして " +"``virtualenv`` はこの動作に追随しています) に注意してください。" #: ../source/tutorials/installing-packages.rst:234 msgid "The basic usage is like so:" @@ -35302,6 +35170,8 @@ msgid "" "project management workflow, including dependency management, packaging, and " "publishing." msgstr "" +"依存関係管理・パッケージング・公開を含む、プロジェクト管理全体のワークフロー" +"をカバーする単一のツールとしての `uv `__ 。" #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" @@ -35502,14 +35372,6 @@ msgstr "" "てください。" #: ../source/tutorials/packaging-projects.rst:141 -#, fuzzy -#| msgid "" -#| "The ``requires`` key is a list of packages that are needed to build your " -#| "package. The :term:`frontend ` should install them " -#| "automatically when building your package. Frontends usually run builds in " -#| "isolated environments, so omitting dependencies here may cause build-time " -#| "errors. This should always include your backend's package, and might have " -#| "other build-time dependencies." msgid "" "The ``requires`` key is a list of packages that are needed to build your " "package. The :term:`frontend ` should install them " @@ -35520,12 +35382,15 @@ msgid "" "code block is the one that introduced support for :ref:`the new license " "metadata `." msgstr "" -"``requires`` は、そのパッケージをビルドするために必要とされるパッケージ群のリ" -"ストです。 :term:`ビルドフロントエンド ` は、そのパッケージを" -"ビルドする際にそれらをインストールするべきです。フロントエンドは、通常、隔離" -"された環境でビルドを実行しますので、ここに依存関係を書き忘れるとビルド時のエ" -"ラーにつながります。バックエンドパッケージには常にこれを含めておくべきであ" -"り、他のビルド時の依存関係を持っているかもしれません。" +"``requires`` キーは、そのパッケージをビルドするために必要とされるパッケージ群" +"のリストです。 :term:`ビルドフロントエンド ` は、そのパッケー" +"ジをビルドする際にそれらを自動的にインストールするべきです。フロントエンド" +"は、通常、隔離された環境でビルドを実行しますので、ここに依存関係を書き忘れる" +"とビルド時のエラーにつながかもしれません。バックエンドパッケージには常にこれ" +"を含めておくべきであり、他のビルド時の依存関係を持っているかもしれません。上" +"記のコードブロックの中で指定された最低限のバージョン番号は、 :ref:`新しいライ" +"センスメタデータ ` へのサポートを導入したバージョ" +"ンです。" #: ../source/tutorials/packaging-projects.rst:150 msgid "" @@ -35640,15 +35505,6 @@ msgstr "" "るものを見つけるまでパッケージのバージョンを遡って探索します。" #: ../source/tutorials/packaging-projects.rst:215 -#, fuzzy -#| msgid "" -#| "``classifiers`` gives the index and :ref:`pip` some additional metadata " -#| "about your package. In this case, the package is only compatible with " -#| "Python 3, is licensed under the MIT license, and is OS-independent. You " -#| "should always include at least which version(s) of Python your package " -#| "works on, which license your package is available under, and which " -#| "operating systems your package will work on. For a complete list of " -#| "classifiers, see https://pypi.org/classifiers/." msgid "" "``classifiers`` gives the index and :ref:`pip` some additional metadata " "about your package. In this case, the package is only compatible with Python " @@ -35658,30 +35514,27 @@ msgid "" "classifiers/." msgstr "" "``classifiers`` は、インデックスと :ref:`pip` に、そのパッケージに関する追加" -"的なメタデータをいくつか与えます。この場合には、当該パッケージは Python 3 で" -"のみ動作し、 MIT ライセンスの下に従うものであり、 OS には依らず独立のもので" -"す。どのバージョンの Python 上でそのパッケージが動作するのか、どのライセンス" -"に従うのか、どのオペレーティングシステムで動作するのかを示しておくことは、常" -"に最低限それだけはやるべきことです。 classifiers の完全なリストについては、 " -"https://pypi.org/classifiers/ を見てください。" +"的なメタデータをいくつか与えます。この場合には、当該パッケージは Python 3 だ" +"けと互換性があり OS には依存しないものです。少なくとも、どのバージョンの " +"Python 上でそのパッケージが動作するのか、どのオペレーティングシステムで動作す" +"るのか、については、常に含めておくべきです。分類子 の完全なリス" +"トについては、 https://pypi.org/classifiers/ を見てください。" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" +"``license`` は、 :term:`配布物アーカイブ ` " +"の :term:`SPDX ライセンス表現 ` です。" #: ../source/tutorials/packaging-projects.rst:224 -#, fuzzy -#| msgid "" -#| "Now run this command from the same directory where :file:`pyproject.toml` " -#| "is located:" msgid "" "``license-files`` is the list of glob paths to the license files, relative " "to the directory where :file:`pyproject.toml` is located." msgstr "" -"さて、 :file:`pyproject.toml` ファイルがあるのと同じディレクトリでこのコマン" -"ドを実行しましょう:" +"``license-files`` は、ライセンスファイル群への glob パスのリスト" +"で、 :file:`pyproject.toml` が位置する場所からの相対パスです。" #: ../source/tutorials/packaging-projects.rst:226 msgid "" @@ -35723,17 +35576,19 @@ msgstr "LICENSE ファイルを作成する" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" -msgstr "" -"Python パッケージインデックスにアップロードされた各々のパッケージにとって、ラ" -"イセンス条項を明示することは重要です。こうすることで、そのパッケージをインス" -"トールするユーザに対して、どのような条件のもとでそのパッケージを使うことがで" -"きるのかを伝えることができるからです。ライセンス選択の助けが必要ならば、 " -"https://choosealicense.com/ を見てください。どのライセンスにするか選択できた" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" +msgstr "" +"Python パッケージインデックスにアップロードされた各々の :term:`配布物アーカイ" +"ブ ` にライセンス条項を含めておくことは重要です。こうす" +"ることで、その :term:`配布物アーカイブ ` をインストール" +"するユーザに対して、どのような条件のもとでそれを使うことができるのかを伝える" +"ことができるからです。ライセンス選択の助けが必要ならば、 https://" +"choosealicense.com/ を見てください。どのライセンスにするかを選択できた" "ら、 :file:`LICENSE` ファイルを開いてそのライセンス条項を書き込んでください。" "例えば、 MIT ライセンスを選択したなら次のようにします:" @@ -35745,6 +35600,8 @@ msgid "" "build backend supports :pep:`639`, the file will be automatically included " "in the package." msgstr "" +"ほとんどのビルドバックエンドは、パッケージの中にライセンスファイルを自動的に" +"含めます。" #: ../source/tutorials/packaging-projects.rst:290 msgid "Including other files" @@ -35887,6 +35744,9 @@ msgid "" "``pypi-`` prefix. Note that the input will be hidden, so be sure to paste " "correctly." msgstr "" +"API トークンの入力を求められるでしょう。 ``pypi-`` プレフィックスを含めてトー" +"クンの値を使ってください。入力内容は隠されているので、正確にペーストすること" +"を確実にしてください。" #: ../source/tutorials/packaging-projects.rst:406 msgid "After the command completes, you should see output similar to this:" @@ -36087,6 +35947,168 @@ msgstr "" "りなのであれば、 *通常のパッケージ* と (空のファイルだとしても) " "``__init__.py`` から離れないことをお薦めします。" +#~ msgid "" +#~ "In addition to the general response metadata, the project detail ``meta`` " +#~ "dictionary **MAY** also include the following:" +#~ msgstr "" +#~ "一般的な応答メタデータに加えて、プロジェクト詳細の ``meta`` 辞書には、以下" +#~ "のものを含めても **構いません** :" + +#~ msgid "The ``project-status-reason`` key was added with API version 1.4." +#~ msgstr "" +#~ "``project-status-reason`` キーは、 API バージョン 1.4 で追加されました。" + +#~ msgid "" +#~ "RECORD.jws is used for digital signatures. It is not mentioned in RECORD." +#~ msgstr "" +#~ "RECORD.jws は、デジタル署名のために使われます。これについては RECORD では" +#~ "触れられません。" + +#~ msgid "" +#~ "RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/" +#~ "MIME signatures to secure their wheel files. It is not mentioned in " +#~ "RECORD." +#~ msgstr "" +#~ "自分の wheel ファイルを S/MIME 署名でセキュアにすることを好む人は、 " +#~ "RECORD.p7s を使うことができます。これについては RECORD では触れられませ" +#~ "ん。" + +#~ msgid "Signed wheel files" +#~ msgstr "署名済み wheel ファイル" + +#~ msgid "" +#~ "Wheel files include an extended RECORD that enables digital signatures. " +#~ "PEP 376's RECORD is altered to include a secure hash " +#~ "``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding " +#~ "with no trailing = characters) as the second column instead of an " +#~ "md5sum. All possible entries are hashed, including any generated files " +#~ "such as .pyc files, but not RECORD which cannot contain its own hash. For " +#~ "example::" +#~ msgstr "" +#~ "Wheel ファイルは、デジタル署名を可能にした拡張 RECORD ファイルを含みま" +#~ "す。 PEP 376 の RECORD は、 md5sum の代わりにセキュアなハッシュ値 " +#~ "``digestname=urlsafe_b64encode_nopad(digest)`` (末尾に = 文字を追加しない " +#~ "url セーフな base64 エンコード) を二つ目のカラムとするように修正されまし" +#~ "た。生成された .pyc ファイルなども含むすべての可能なエントリにハッシュ値が" +#~ "付加されていますが、 RECORD は自身のハッシュ値を含むことができないので例外" +#~ "です。例えば::" + +#~ msgid "" +#~ "The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in " +#~ "RECORD at all since they can only be added after RECORD is generated. " +#~ "Every other file in the archive must have a correct hash in RECORD or the " +#~ "installation will fail." +#~ msgstr "" +#~ "署名用のファイルである RECORD.jws と RECORD.p7s は、 RECORD ファイルが作成" +#~ "された後にしか追加できないので、RECORD ファイル内で言及されることは全くあ" +#~ "りません。アーカイブの中の他のファイルはすべて、RECORD ファイル内に正しい" +#~ "ハッシュ値を持たなければならず、そうでなければインストールに失敗します。" + +#~ msgid "" +#~ "If JSON web signatures are used, one or more JSON Web Signature JSON " +#~ "Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent " +#~ "to RECORD. JWS is used to sign RECORD by including the SHA-256 hash of " +#~ "RECORD as the signature's JSON payload:" +#~ msgstr "" +#~ "JSON ウェブ署名が使われる場合には、ひとつかそれ以上の JSON Web Signature " +#~ "JSON Serialization (JWS-JS) 署名が RECORD ファイルの隣にある RECORD.jws " +#~ "ファイルの中に保存されます。 RECORD ファイルの SHA-256 ハッシュ値を署名の " +#~ "JSON ペイロードに含むことで RECORD ファイルに署名するために JWS が使われま" +#~ "す:" + +#~ msgid "(The hash value is the same format used in RECORD.)" +#~ msgstr "" +#~ "(ハッシュ値の書き方のフォーマットは RECORD で使われるものと同じです。)" + +#~ msgid "" +#~ "If RECORD.p7s is used, it must contain a detached S/MIME format signature " +#~ "of RECORD." +#~ msgstr "" +#~ "RECORD.p7s を使う場合は、このファイルに RECORD ファイルに関する分離型の S/" +#~ "MIME 署名を入れておかなければなりません。" + +#~ msgid "" +#~ "A wheel installer is not required to understand digital signatures but " +#~ "MUST verify the hashes in RECORD against the extracted file contents. " +#~ "When the installer checks file hashes against RECORD, a separate " +#~ "signature checker only needs to establish that RECORD matches the " +#~ "signature." +#~ msgstr "" +#~ "wheel インストーラはデジタル署名を理解することを要求されてはいませんが、 " +#~ "RECORD ファイル内のハッシュ値が展開されたファイル内容に対して妥当であるこ" +#~ "とを検証しなければなりません。インストーラが RECORD ファイルに対するハッ" +#~ "シュ値を確認する際には、別途用意された署名検証プログラムは RECORD ファイル" +#~ "が署名に対して妥当であることだけを確認すれば十分です。" + +#~ msgid "See" +#~ msgstr "以下を参照のこと" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7515" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7515" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7517" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7517" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" + +#~ msgid "Why does wheel include attached signatures?" +#~ msgstr "なぜ wheel は添付された署名を持つのか?" + +#~ msgid "" +#~ "Attached signatures are more convenient than detached signatures because " +#~ "they travel with the archive. Since only the individual files are " +#~ "signed, the archive can be recompressed without invalidating the " +#~ "signature or individual files can be verified without having to download " +#~ "the whole archive." +#~ msgstr "" +#~ "添付された署名は、アーカイブと一体のものとして転送されるので、分離署名より" +#~ "も便利です。個々のファイルが署名されているだけなので、アーカイブを圧縮し直" +#~ "しても署名が無効にならず、また、アーカイブ全体をダウンロードしなくても個々" +#~ "のファイルの検証を行うことができます。" + +#~ msgid "Why does wheel allow JWS signatures?" +#~ msgstr "なぜ wheel は JWS 署名を許容するのか?" + +#~ msgid "" +#~ "The JOSE specifications of which JWS is a part are designed to be easy to " +#~ "implement, a feature that is also one of wheel's primary design goals. " +#~ "JWS yields a useful, concise pure-Python implementation." +#~ msgstr "" +#~ "JWS がその一部を構成する JOSE の仕様は実装を容易にするように設計されてお" +#~ "り、その性質は wheel の基本的な設計目標のひとつでもあります。 JWS は使いや" +#~ "すくて簡潔な純 Python の実装をもたらします。" + +#~ msgid "Why does wheel also allow S/MIME signatures?" +#~ msgstr "なぜ wheel は S/MIME 署名をも許容するのか?" + +#~ msgid "" +#~ "S/MIME signatures are allowed for users who need or want to use existing " +#~ "public key infrastructure with wheel." +#~ msgstr "" +#~ "S/MIME 署名は、既存の公開鍵基盤を wheel でも採用する必要があるか、または、" +#~ "採用したいユーザのために許容されています。" + +#~ msgid "" +#~ "Signed packages are only a basic building block in a secure package " +#~ "update system. Wheel only provides the building block." +#~ msgstr "" +#~ "署名されたパッケージは、セキュアなパッケージ更新システムを構成するひとつの" +#~ "ビルディングブロックであるというだけのものです。 Wheel としては、単にビル" +#~ "ディングブロックを提供するだけです。" + +#~ msgid "The license expressions for these projects are:" +#~ msgstr "これらのプロジェクトに対するライセンス条項は:" + #~ msgid "TUF Support - PEP 458" #~ msgstr "TUF サポート - PEP 458" diff --git a/locales/kab/LC_MESSAGES/messages.po b/locales/kab/LC_MESSAGES/messages.po index 0fe2fb249..a6f7efd30 100644 --- a/locales/kab/LC_MESSAGES/messages.po +++ b/locales/kab/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-10-14 20:08+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Kabyle `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "pypi.org" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "pyproject.toml" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3638,11 +3638,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3651,11 +3651,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3663,26 +3663,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3694,38 +3694,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "setup.py" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "setup.cfg" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3734,21 +3734,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "Akemmus n unagraw" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3757,11 +3757,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3769,15 +3769,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "Wheel" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3785,21 +3785,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3952,7 +3952,7 @@ msgstr "Aglam" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "Imedyaten" @@ -4323,7 +4323,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4645,7 +4645,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6704,11 +6704,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6744,7 +6745,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6757,29 +6759,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6791,65 +6793,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6858,18 +6860,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6878,11 +6880,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6892,7 +6894,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6901,11 +6903,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6917,24 +6919,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6942,17 +6944,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6963,11 +6965,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6975,14 +6977,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8758,7 +8760,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9374,40 +9376,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9415,25 +9421,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9441,45 +9447,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9490,31 +9496,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9918,7 +9924,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10023,90 +10029,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10115,26 +10121,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10142,28 +10148,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10171,33 +10177,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13248,86 +13254,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13336,116 +13338,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13455,51 +13386,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13507,7 +13398,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13515,18 +13406,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13535,7 +13426,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13546,7 +13437,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13564,7 +13455,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13573,7 +13464,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13587,24 +13478,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13612,24 +13503,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14383,11 +14278,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16219,17 +16114,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18237,7 +18138,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22297,7 +22198,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22336,7 +22237,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22556,14 +22457,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22597,7 +22498,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22605,45 +22506,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22651,7 +22552,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22660,23 +22561,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22685,14 +22586,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22702,7 +22603,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22710,14 +22611,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22727,45 +22628,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22774,7 +22675,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22784,17 +22685,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22802,7 +22703,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22811,11 +22712,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22823,11 +22724,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22890,11 +22791,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22903,65 +22804,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22969,7 +22870,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22980,7 +22881,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22989,33 +22890,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23025,7 +22926,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23035,7 +22936,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23043,7 +22944,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23054,22 +22955,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23078,25 +22979,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23104,13 +23005,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23120,18 +23021,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23139,7 +23040,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23149,7 +23050,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23157,7 +23058,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23165,7 +23066,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23174,18 +23075,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23193,13 +23094,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23208,23 +23109,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23233,79 +23134,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24872,11 +24773,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24885,29 +24788,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24915,101 +24818,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25017,29 +24920,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25051,7 +24954,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25060,14 +24963,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25076,7 +24979,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25084,7 +24987,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25095,15 +24998,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25111,7 +25014,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25119,7 +25022,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25131,43 +25034,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25176,29 +25079,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26564,7 +26471,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26603,11 +26510,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/ko/LC_MESSAGES/messages.po b/locales/ko/LC_MESSAGES/messages.po index a1afd4404..04b0f3180 100644 --- a/locales/ko/LC_MESSAGES/messages.po +++ b/locales/ko/LC_MESSAGES/messages.po @@ -9,21 +9,22 @@ # emscb , 2024. # 황인아 , 2024. # Changseop Yeom , 2025. +# 스이미 , 2026. msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" -"PO-Revision-Date: 2025-11-25 00:51+0000\n" -"Last-Translator: Changseop Yeom \n" -"Language-Team: Korean \n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" +"PO-Revision-Date: 2026-02-05 03:01+0000\n" +"Last-Translator: 스이미 \n" +"Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.15-dev\n" +"X-Generator: Weblate 5.16-dev\n" #: ../source/contribute.rst:5 msgid "Contribute to this guide" @@ -39,25 +40,23 @@ msgstr "" #: ../source/contribute.rst:10 msgid "Reading the guide and giving feedback" -msgstr "가이드 읽기 및 피드백 제공" +msgstr "가이드를 읽고 피드백을 제공하기" #: ../source/contribute.rst:11 msgid "Reviewing new contributions" -msgstr "새로운 기여를 검토" +msgstr "새로운 기여를 검토하기" #: ../source/contribute.rst:12 msgid "Revising existing content" -msgstr "기존 콘텐츠 수정" +msgstr "기존 콘텐츠를 수정하기" #: ../source/contribute.rst:13 msgid "Writing new content" -msgstr "새로운 콘텐츠 작성" +msgstr "새로운 콘텐츠를 작성하기" #: ../source/contribute.rst:14 -#, fuzzy -#| msgid "Translate the guide" msgid "Translating the guide" -msgstr "가이드 번역" +msgstr "가이드를 번역하기" #: ../source/contribute.rst:16 msgid "" @@ -66,10 +65,10 @@ msgid "" "`pull requests`__. If you're planning to write or edit the guide, please " "read the :ref:`style guide `." msgstr "" -"|PyPUG|에 대한 대부분의 작업은 `프로젝트의 GitHub 저장소`__에서 이루어집니" -"다. 시작하려면 `open issues`__ 및 `pull requests`__ 목록을 확인하세요. 가이드" -"를 작성하거나 편집할 계획이라면 :ref:`style guide `" -"를 읽어보세요." +"|PyPUG|의 작업은 대부분 `프로젝트의 GitHub 저장소`__에서 진행됩니다. 시작하려" +"면 `open issues`__ 및 `pull requests`__ 목록을 확인하세요. 가이드를 작성하거" +"나 편집할 계획이라면 :ref:`스타일 가이드 `를 읽어주" +"시기 바랍니다." #: ../source/contribute.rst:25 msgid "" @@ -357,6 +356,11 @@ msgid "" "detail, while this guide describes only the parts of pip that are needed to " "complete the specific tasks described in this guide." msgstr "" +"이 가이드는 모든 내용을 담고 있는 종합서가 아니며, 개별 프로젝트의 공식 문서" +"를 대체하기 위해서 작성 된 것도 아닙니다. 예를 들어, pip에는 수십 개의 명령어" +"와 옵션, 설정이 존재합니다. pip 공식 문서에서는 그 모든 요소들을 상세히 설명" +"하고 있지만, 이 가이드는 본문에 서술된 특정 작업들을 완료하는데 필요한 pip의 " +"핵심적인 부분들만을 다룹니다." #: ../source/contribute.rst:199 msgid "Audience" @@ -364,7 +368,7 @@ msgstr "청중" #: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." -msgstr "" +msgstr "이 가이드는 패키지를 사용하는 Python 사용자라면 누구든 해당됩니다." #: ../source/contribute.rst:203 msgid "" @@ -395,6 +399,8 @@ msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." msgstr "" +"이 가이드를 작성할 때는 모든 내용을 알고 있더라도, 최대한 친근하고 겸손한 말" +"투를 유지하도록 노력해 주세요." #: ../source/contribute.rst:218 msgid "" @@ -403,6 +409,10 @@ msgid "" "person has asked you a question and you know the answer. How do you respond? " "*That* is how you should write this guide." msgstr "" +"여러분이 아주 똑똑하고 실력 있는 사람과 함께 Python 프로젝트를 하고 있다고 상" +"상해 보세요. 서로 손발도 잘 맞고 사이도 좋습니다. 그 사람이 여러분에게 질문" +"을 던졌고 , 여러분은 그 답을 이미 알고 있습니다. 그때 여러분이 그 사람에게 대" +"답해 주는 *그 방식*, 그게 바로 이 가이드를 작성하는 말투여야 합니다." #: ../source/contribute.rst:223 msgid "" @@ -413,6 +423,11 @@ msgid "" "hereby granted permission to end a sentence in a preposition, if that's what " "you want to end it with." msgstr "" +"간단하게 확인해 볼까요? 여러분이 쓴 글을 소리 내어 읽어보며 말투와 느낌을 살" +"펴보세요. 평소에 여러분이 하는 말처럼 들리나요, 아니면 마치 연극 대사나 연설" +"문처럼 들리나요? 격식을 차린 딱딱한 문법에 너무 얽매이지 말고, 평소 여러분이 " +"쓰는 자연스러운 표현들을 마음껏 사용해 보세요. 문장 끝을 딱딱한 말투 대신 조" +"금 더 친근한 말투로 끝내고 싶다면, 그렇게 하셔도 좋습니다." #: ../source/contribute.rst:230 msgid "" @@ -421,24 +436,29 @@ msgid "" "joke, but if you're covering a sensitive security recommendation, you might " "want to avoid jokes altogether." msgstr "" +"가이드를 쓸 때는 주제의 무게나 난이도에 맞춰 말투를 조절해 주세요. 입문자를 " +"위한 튜토리얼이라면 가벼운 농담을 던져도 괜찮지만, 보안과 관련된 민감한 내용" +"을 다룰 때라면, 농담을 아예 피하는 것이 좋습니다." #: ../source/contribute.rst:237 msgid "Conventions and mechanics" -msgstr "" +msgstr "약속과 원칙" #: ../source/contribute.rst:245 msgid "**Write to the reader**" -msgstr "" +msgstr "**독자에게 직접 말을 걸어보세요**" #: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." msgstr "" +"권고 사항이나 작업 순서를 설명할 때는 독자에게 직접 말을 건내듯 *여러분* 이라" +"고 지칭하거나, 요청형 문장을 사용해 보세요." #: ../source/contribute.rst:0 msgid "Wrong: To install it, the user runs…" -msgstr "" +msgstr "잘못된: 설치하려면, 직접 실행하세요…" #: ../source/contribute.rst:0 msgid "Right: You can install it by running…" @@ -459,10 +479,13 @@ msgid "" "you're going to make assumptions, then say what assumptions that you're " "going to make." msgstr "" +"독자가 내용을 미리 알고 있다고 가정하지 마세요. 독자가 가이드의 어떤 페이지" +"를 가장 먼저 보게 될지 알 수 없기 때문입니다. 가정이 꼭 필요할 때는 그 내용" +"을 미리 언급해 주세요." #: ../source/contribute.rst:256 msgid "**Cross-reference generously**" -msgstr "" +msgstr "**관련 내용을 충분히 참조하세요**" #: ../source/contribute.rst:254 msgid "" @@ -470,36 +493,40 @@ msgid "" "that covers it, or link to a relevant document elsewhere. Save the reader a " "search." msgstr "" +"특정 도구를 처음 언급할 때는 관련 가이드나 외부 문서로 링크를 걸어주세요. 독" +"자가 직접 검색하는 수고를 덜어줄 수 있습니다." #: ../source/contribute.rst:266 msgid "**Respect naming practices**" -msgstr "" +msgstr "**고유 명칭의 표기법을 존중해 주세요**" #: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." msgstr "" +"도구, 사이트, 인물 및 기타 고유 명칭을 언급할 때는 해당 대상이 선호하는 대소" +"문자 표기 방식을 따라주세요." #: ../source/contribute.rst:0 msgid "Wrong: Pip uses…" -msgstr "" +msgstr "잘못된: Pip를 사용하세요…" #: ../source/contribute.rst:0 msgid "Right: pip uses…" -msgstr "" +msgstr "올바른: pip를 사용하세요…" #: ../source/contribute.rst:0 msgid "Wrong: …hosted on github." -msgstr "" +msgstr "잘못된: ...github에서 호스팅됩니다." #: ../source/contribute.rst:0 msgid "Right: …hosted on GitHub." -msgstr "" +msgstr "올바른: ...GitHub애서 호스팅됩니다." #: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" -msgstr "" +msgstr "**특정 성별에 치우치지 않는 표현을 사용해 주세요**" #: ../source/contribute.rst:269 msgid "" @@ -507,22 +534,26 @@ msgid "" "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " "avoid pronouns entirely." msgstr "" +"때때로, 여러분은 독자를 *you(여러분)*, *your(여러분의)*, 그리고 *yours(여러분" +"의 것)* 로 지칭하게 됩니다. 그렇지 않은 경우에는, 성중립적 대명사인 *they(그" +"들)*, *their(그들의)*, 그리고 *theirs(그들의 것)* 를 사용하거나 대명사를 완전" +"히 사용하지 마십시오." #: ../source/contribute.rst:0 msgid "Wrong: A maintainer uploads the file. Then he…" -msgstr "" +msgstr "잘못된: 메인테이너가 파일을 업로드합니다. 그 후 그는…" #: ../source/contribute.rst:0 msgid "Right: A maintainer uploads the file. Then they…" -msgstr "" +msgstr "올바른: 메인테이너가 파일을 업로드합니다. 그 후 그들은…" #: ../source/contribute.rst:0 msgid "Right: A maintainer uploads the file. Then the maintainer…" -msgstr "" +msgstr "올바른: 메인테이너가 파일을 업로드합니다. 그 후 메인테이너는…" #: ../source/contribute.rst:287 msgid "**Headings**" -msgstr "" +msgstr "**헤드라인**" #: ../source/contribute.rst:278 msgid "" @@ -531,34 +562,42 @@ msgid "" "reader might want to know *How do I install MyLibrary?* so a good heading " "might be *Install MyLibrary*." msgstr "" +"독자가 검색하는 단어를 사용하여 제목을 작성하십시오. 좋은 방법은 당신의 제목" +"이 예상되는 질문을 완성하게 하는 것입니다. 예를 들어, 독자는 *어떻게 " +"MyLibrary를 설치하나요?* 를 알고 싶어 할 수 있으므로, 좋은 제목은 *MyLibrary " +"설치* 가 될 수 있습니다." #: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." msgstr "" +"섹션 제목에는 문장처럼 자연스러운 형식을 사용하십시오. 다시 말해, 일반적인 문" +"장을 쓰는 것처럼 제목을 작성하십시오." #: ../source/contribute.rst:0 msgid "Wrong: Things You Should Know About Python" -msgstr "" +msgstr "잘못된: Python에 대해 알아야 할 것" #: ../source/contribute.rst:0 msgid "Right: Things you should know about Python" -msgstr "" +msgstr "올바른: Python에 대해 여러분이 알아야 할 것들" #: ../source/contribute.rst:290 msgid "**Numbers**" -msgstr "" +msgstr "**숫자**" #: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." msgstr "" +"본문에서는 1부터 9까지의 숫자는 단어(하나, 둘 등)로 쓰고, 다른 숫자나 표에 있" +"는 숫자에는 숫자(15, 700 등)를 사용하십시오." #: ../source/discussions/deploying-python-applications.rst:4 msgid "Deploying Python applications" -msgstr "" +msgstr "Python 애플리케이션 배포하기" #: ../source/discussions/deploying-python-applications.rst:0 #: ../source/discussions/downstream-packaging.rst:0 @@ -572,14 +611,14 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:0 #: ../source/guides/supporting-windows-using-appveyor.rst:0 msgid "Page Status" -msgstr "" +msgstr "페이지 상태" #: ../source/discussions/deploying-python-applications.rst:6 #: ../source/guides/index-mirrors-and-caches.rst:7 #: ../source/guides/installing-using-linux-tools.rst:7 #: ../source/guides/packaging-binary-extensions.rst:7 msgid "Incomplete" -msgstr "미완료" +msgstr "미완성" #: ../source/discussions/deploying-python-applications.rst:0 #: ../source/discussions/downstream-packaging.rst:0 @@ -591,25 +630,25 @@ msgstr "미완료" #: ../source/guides/supporting-multiple-python-versions.rst:0 #: ../source/guides/supporting-windows-using-appveyor.rst:0 msgid "Last Reviewed" -msgstr "" +msgstr "최종 검토일" #: ../source/discussions/deploying-python-applications.rst:7 msgid "2021-8-24" -msgstr "" +msgstr "2021-8-24 (한글 번역: 2026-02-04)" #: ../source/discussions/deploying-python-applications.rst:11 #: ../source/specifications/externally-managed-environments.rst:130 #: ../source/specifications/platform-compatibility-tags.rst:14 msgid "Overview" -msgstr "" +msgstr "개요" #: ../source/discussions/deploying-python-applications.rst:15 msgid "Supporting multiple hardware platforms" -msgstr "" +msgstr "다양한 하드웨어 플랫폼 지원" #: ../source/discussions/deploying-python-applications.rst:37 msgid "OS packaging & installers" -msgstr "" +msgstr "OS 패키징 및 인스톨러" #: ../source/discussions/deploying-python-applications.rst:49 #: ../source/discussions/deploying-python-applications.rst:86 @@ -629,6 +668,12 @@ msgid "" "tool downloads the specified Python-interpreter for Windows and packages it " "with all the dependencies in a single Windows-executable installer." msgstr "" +"`Pynsist `__ 는 NSIS를 기반으로 Python 프로" +"그램과 Python 인터프리터를 하나의 설치 프로그램으로 묶어주는 도구입니다. 대부" +"분, 사용자는 파이썬 인터프리터 버전만 선택하고 프로그램 의존성을 선언하기만 " +"하면 패키징을 할 수 있습니다. 이 도구는 지정된 Windows용 파이썬 인터프리터를 " +"다운로드하고 모든 의존성과 함께 하나의 Windows 실행 파일 형태의 설치 프로그램" +"으로 패키징합니다." #: ../source/discussions/deploying-python-applications.rst:67 msgid "" @@ -637,6 +682,9 @@ msgid "" "application directory, independent of any other Python installation on the " "computer." msgstr "" +"설치된 프로그램은 설치 프로그램이 시작 메뉴에 추가한 바로가기를 통해 실행할 " +"수 있으며, 이 프로그램은 컴퓨터에 설치된 다른 Python 인터프리터와 무관하게, " +"디텍터리 내에 설치된 자체 Python 인터프리터를 사용합니다." #: ../source/discussions/deploying-python-applications.rst:71 msgid "" @@ -645,10 +693,13 @@ msgid "" "GUI) in the :any:`documentation `. The tool is released under " "the MIT-licence." msgstr "" +"Pynsist의 큰 장점은 Linux에서도 Windows 패키지를 빌드할 수 있다는 것입니" +"다. :any:`documentation ` 에는 다양한 종류의 프로그램(콘솔, " +"GUI)에 대한 여러 예제가 제공됩니다. 이 도구는 MIT 라이선스로 배포됩니다." #: ../source/discussions/deploying-python-applications.rst:77 msgid "Application bundles" -msgstr "" +msgstr "애플리케이션 번들" #: ../source/discussions/deploying-python-applications.rst:89 msgid "py2exe" @@ -665,6 +716,13 @@ msgid "" "supported. The distutils extension is released under the MIT-licence and " "Mozilla Public License 2.0." msgstr "" +"`py2exe `__ 는 Python 스크립트에서 단독 실" +"행 가능한 Windows 프로그램(32비트 및 64비트)을 빌드할 수 있게 해주는 " +"distutils 확장 모입니다. 공식 지원 범위에 포함된 Python 버전이 지원됩니다 " +"(refers to `Status of Python branches`__). py2exe는 콘솔 실행 파일과 윈도우" +"(GUI) 실행 파일을 빌드할 수 있습니다. Windows service 및 DLL/EXE COM 서버 빌" +"드 기능도 가능할 수 있지만, 활발하게 지원되지는 않습니다. 이 distutils 확장 " +"모듈은 MIT 라이선스와 Mozilla Public License 2.0에 따라 배포됩니다." #: ../source/discussions/deploying-python-applications.rst:103 #: ../source/specifications/platform-compatibility-tags.rst:200 @@ -683,15 +741,20 @@ msgid "" "applications, it cannot create Mac applications on other platforms. py2app " "is released under the MIT-license." msgstr "" +"`py2app `__ 는 Python setuptools 명령어로, " +"Python 스크립트로부터 단독 실행 가능한 macOS 애플리케이션 번들과 플러그인을 " +"만들 수 있게 해줍니다. py2app는 반드시 macOS에서 사용해야 하며, 다른 플랫폼에" +"서는 Mac용 애플리케이션을 생성할 수 없습니다. py2app는 MIT 라이선스로 배포됩" +"니다." #: ../source/discussions/deploying-python-applications.rst:115 msgid "Unix (including Linux and macOS)" -msgstr "" +msgstr "Unix (Linux 및 macOS 포함)" #: ../source/discussions/deploying-python-applications.rst:118 #: ../source/key_projects.rst:576 msgid "pex" -msgstr "" +msgstr "pex" #: ../source/discussions/deploying-python-applications.rst:120 msgid "" @@ -703,14 +766,20 @@ msgid "" "distributions, meaning that a single pex file can be portable across Linux " "and macOS. pex is released under the Apache License 2.0." msgstr "" +"`pex `__ 는 가상 환경(virtualenv)한 유사한 방" +"식으로 실행 가능한 Python 환경인 .pex(Python EXecutable) 파일을 생성하는 라이" +"브러리입니다. pex는 :pep:441에 기술된 아이디어를 확장한 것으로, Python 애플리" +"케이션 배포를 cp 명령만큼이나 간하게 만들어 줍니다. pex 파일에는 여러 플랫폼" +"별 Python 배포판을 포함할 수도 있으므로, 하나의 pex 파일로 Linux와 macOS에서 " +"모두 사용 가능합니다. pex는 Apache License 2.0에 따라 배포됩니다." #: ../source/discussions/deploying-python-applications.rst:129 msgid "Configuration management" -msgstr "" +msgstr "구성 관리" #: ../source/discussions/distribution-package-vs-import-package.rst:5 msgid "Distribution package vs. import package" -msgstr "" +msgstr "배포 패키지 vs import 패키지" #: ../source/discussions/distribution-package-vs-import-package.rst:7 msgid "" @@ -719,10 +788,14 @@ msgid "" "related meanings in Python packaging, \"distribution package\" and \"import " "package\"." msgstr "" +"일반적으로 \"패키지\" 라는 단어는 여러 가지 서로 다른 개념을 지칭하는 데 사용" +"됩니다. 이 페이지에서는 Python 패키징에서 쓰이는, 서로 다르지만 밀접한 관련" +"이 있는 두 가지 의미인 '배포 패키지(distribution package)'와 'import 패키지" +"(import package)'의 차이점을 명확히 설명합니다." #: ../source/discussions/distribution-package-vs-import-package.rst:13 msgid "What's a distribution package?" -msgstr "" +msgstr "배포 패키지란 무엇인가요?" #: ../source/discussions/distribution-package-vs-import-package.rst:15 msgid "" @@ -736,6 +809,14 @@ msgid "" "be used to refer to a specific file that contains a certain version of a " "project." msgstr "" +"배포 패키지는 여러분이 설치할 수 있는 소프트웨어의 한 종류입니다. 대부분의 경" +"우 '프로젝트'와 같은 의미로 쓰입니다. 여러분이 ``pip install pkg``를 입력하거" +"나, ``pyproject.toml``파일에 ``dependencies = [\"pkg\"]``라고 작성할 때, 여기" +"서 ``pkg``가 바로 배포 패키지의 이름입니다. Python 라이브러리와 도구를 설치" +"할 때 가장 널리 알려진 중앙 저장소인 PyPI_ 에서 검색하거나 둘러볼 때 보게 되" +"는 것들도 모두 배포 패키지 목록입니다. 또한, \"배포 패키지\"라는 용어는 프로" +"젝트의 특정 버전을 포함하고 있는 구체적인 파일을 가리키는 데 사용되기도 합니" +"다." #: ../source/discussions/distribution-package-vs-import-package.rst:24 msgid "" @@ -744,11 +825,14 @@ msgid "" "by the system package manager of the `Linux distribution `_, which " "is a different meaning." msgstr "" +"Linux 환경에서 \"배포 패키지(distribution package)\"는 일반적으로 \"디스트로 " +"패키지(distro package)\" 또는 \"패키지(package)\"로 줄여서 사용되며, `Linux " +"배포판 `_ 의 시스템 패키지 관리자가 제공하는 것을 의미합니다. 이는 " +"앞서 언급한 \"배포 패키지(distribution package)\"와는 다른 의미입니다." #: ../source/discussions/distribution-package-vs-import-package.rst:31 -#, fuzzy msgid "What's an import package?" -msgstr "패키지 가져오기" +msgstr "import 패키지란 무엇인가요?" #: ../source/discussions/distribution-package-vs-import-package.rst:33 msgid "" @@ -760,16 +844,25 @@ msgid "" "is a directory on the file system, containing modules as ``.py`` files and " "subpackages as subdirectories." msgstr "" +"import 패키지는 하나의 Python 모듈입니다. 따라서 여러분의 Python 코드에 " +"``import pkg``나 ``from pkg import func``라고 작성할 때, 여기서 ``pkg``는 " +"import 패키지의 이름입니다. 더 정확히 말하자면, import 패키지는 하위 모듈" +"(submodule)을 포함할 수 있는 특수한 Python 모듈입니다. 예를 들어, ``numpy`` " +"패키지는 ``numpy.linalg``나 ``numpy.fft``와 같은 모듈들을 포함하고 있습니다. " +"보통 import 패키지는 파일 시스템상의 디렉터리 형태이며, 그 안에 ``.py`` 파일 " +"형태의 모듈과 하위 디렉터리 형태의 하위 패키지(subpackage)를 포함합니다." #: ../source/discussions/distribution-package-vs-import-package.rst:42 msgid "" "You can use an import package as soon as you have installed a distribution " "package that provides it." msgstr "" +"여러분이 import 패키지를 제공하는 배포 패키지를 설치하면, 즉시 그 패키지를 사" +"용할 수 있습니다." #: ../source/discussions/distribution-package-vs-import-package.rst:47 msgid "What are the links between distribution packages and import packages?" -msgstr "" +msgstr "배포 패키지와 import 패키지 사이에는 어떤 연결 관계가 있나요?" #: ../source/discussions/distribution-package-vs-import-package.rst:49 msgid "" @@ -3499,9 +3592,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3682,54 +3775,54 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3737,11 +3830,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3750,12 +3843,12 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 #, fuzzy msgid "Requirement Specifier" msgstr "요구 사항 지정자" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3763,28 +3856,28 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 #, fuzzy #| msgid "Project name" msgid "Root License Directory" msgstr "프로젝트 이름" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3796,38 +3889,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" -msgstr "" +msgstr "소스 아카이브" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3836,21 +3929,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "버전 명시자" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3859,11 +3952,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3871,15 +3964,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3887,23 +3980,23 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 #, fuzzy #| msgid "Project" msgid "Wheel Project" msgstr "프로젝트" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -4056,7 +4149,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4412,7 +4505,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4738,7 +4831,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6808,11 +6901,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6848,7 +6942,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6861,29 +6956,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6895,65 +6990,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6962,18 +7057,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6982,11 +7077,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6996,7 +7091,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -7005,11 +7100,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -7021,24 +7116,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -7046,17 +7141,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -7067,11 +7162,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7079,14 +7174,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8864,7 +8959,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9482,42 +9577,46 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy #| msgid "Reviewing new contributions" msgid "Building distributions" msgstr "새로운 기여를 검토" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9525,25 +9624,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9551,45 +9650,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9600,31 +9699,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -10028,7 +10127,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10133,90 +10232,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10225,26 +10324,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10252,28 +10351,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10281,33 +10380,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13358,88 +13457,84 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 #, fuzzy #| msgid "Project name" msgid "Subdirectory name" msgstr "프로젝트 이름" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13448,116 +13543,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13567,51 +13591,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13619,7 +13603,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13627,18 +13611,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13647,7 +13631,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13658,7 +13642,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13676,7 +13660,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13685,7 +13669,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13699,24 +13683,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13724,24 +13708,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14504,11 +14492,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16344,17 +16332,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18369,7 +18363,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22443,7 +22437,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22482,7 +22476,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22703,14 +22697,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22744,7 +22738,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22752,45 +22746,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22798,7 +22792,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22807,23 +22801,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22832,14 +22826,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22849,7 +22843,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22857,14 +22851,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22874,45 +22868,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22921,7 +22915,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22931,17 +22925,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22949,7 +22943,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22958,11 +22952,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22970,11 +22964,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -23037,12 +23031,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 #, fuzzy msgid "Version + Format Selection" msgstr "번역" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -23051,65 +23045,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23117,7 +23111,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23128,7 +23122,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23137,33 +23131,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23173,7 +23167,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23183,7 +23177,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23191,7 +23185,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23202,22 +23196,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23226,25 +23220,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23252,13 +23246,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23268,18 +23262,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23287,7 +23281,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23297,7 +23291,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23305,7 +23299,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23313,7 +23307,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23322,18 +23316,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23341,13 +23335,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23356,23 +23350,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23381,79 +23375,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -25026,11 +25020,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -25039,29 +25035,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -25069,101 +25065,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25171,29 +25167,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25205,7 +25201,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25214,14 +25210,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25230,7 +25226,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25238,7 +25234,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25249,15 +25245,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25265,7 +25261,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25273,7 +25269,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25285,43 +25281,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25330,29 +25326,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26722,7 +26722,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26761,11 +26761,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/lzh/LC_MESSAGES/messages.po b/locales/lzh/LC_MESSAGES/messages.po index c85e84a76..085899762 100644 --- a/locales/lzh/LC_MESSAGES/messages.po +++ b/locales/lzh/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2024-01-31 06:01+0000\n" "Last-Translator: maker \n" "Language-Team: Chinese (Literary) `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3641,11 +3641,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3654,11 +3654,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3666,26 +3666,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3697,38 +3697,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "源码" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3737,21 +3737,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "版本指定器" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3760,11 +3760,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3772,15 +3772,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3788,21 +3788,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3955,7 +3955,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4311,7 +4311,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4633,7 +4633,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6692,11 +6692,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6732,7 +6733,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6745,29 +6747,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6779,65 +6781,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6846,18 +6848,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6866,11 +6868,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6880,7 +6882,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6889,11 +6891,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6905,24 +6907,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6930,17 +6932,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6951,11 +6953,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6963,14 +6965,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8746,7 +8748,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9362,40 +9364,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9403,25 +9409,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9429,45 +9435,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9478,31 +9484,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9906,7 +9912,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10011,90 +10017,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10103,26 +10109,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10130,28 +10136,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10159,33 +10165,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13236,86 +13242,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13324,116 +13326,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13443,51 +13374,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13495,7 +13386,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13503,18 +13394,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13523,7 +13414,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13534,7 +13425,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13552,7 +13443,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13561,7 +13452,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13575,24 +13466,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13600,24 +13491,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14371,11 +14266,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16209,17 +16104,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18227,7 +18128,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22279,7 +22180,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22318,7 +22219,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22538,14 +22439,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22579,7 +22480,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22587,45 +22488,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22633,7 +22534,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22642,23 +22543,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22667,14 +22568,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22684,7 +22585,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22692,14 +22593,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22709,45 +22610,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22756,7 +22657,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22766,17 +22667,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22784,7 +22685,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22793,11 +22694,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22805,11 +22706,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22872,11 +22773,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22885,65 +22786,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22951,7 +22852,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22962,7 +22863,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22971,33 +22872,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23007,7 +22908,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23017,7 +22918,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23025,7 +22926,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23036,22 +22937,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23060,25 +22961,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23086,13 +22987,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23102,18 +23003,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23121,7 +23022,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23131,7 +23032,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23139,7 +23040,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23147,7 +23048,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23156,18 +23057,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23175,13 +23076,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23190,23 +23091,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23215,79 +23116,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24854,11 +24755,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24867,29 +24770,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24897,101 +24800,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24999,29 +24902,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25033,7 +24936,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25042,14 +24945,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25058,7 +24961,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25066,7 +24969,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25077,15 +24980,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25093,7 +24996,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25101,7 +25004,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25113,43 +25016,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25158,29 +25061,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26546,7 +26453,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26585,11 +26492,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/mk/LC_MESSAGES/messages.po b/locales/mk/LC_MESSAGES/messages.po index 7e8548424..6de0b2bd3 100644 --- a/locales/mk/LC_MESSAGES/messages.po +++ b/locales/mk/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2023-10-21 04:04+0000\n" "Last-Translator: \"Kristijan \\\"Fremen\\\" Velkovski\" \n" "Language-Team: Macedonian `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3647,11 +3647,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3660,11 +3660,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3672,26 +3672,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3703,38 +3703,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3743,21 +3743,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3766,11 +3766,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3778,15 +3778,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3794,21 +3794,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3961,7 +3961,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4317,7 +4317,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4639,7 +4639,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6698,11 +6698,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6738,7 +6739,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6751,29 +6753,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6785,65 +6787,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6852,18 +6854,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6872,11 +6874,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6886,7 +6888,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6895,11 +6897,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6911,24 +6913,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6936,17 +6938,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6957,11 +6959,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6969,14 +6971,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8752,7 +8754,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9368,42 +9370,46 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy #| msgid "Binary Distribution" msgid "Building distributions" msgstr "Бинарна Дистрибуција" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9411,25 +9417,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9437,45 +9443,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9486,31 +9492,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9914,7 +9920,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10019,90 +10025,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10111,26 +10117,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10138,28 +10144,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10167,33 +10173,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13244,86 +13250,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13332,116 +13334,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13451,51 +13382,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13503,7 +13394,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13511,18 +13402,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13531,7 +13422,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13542,7 +13433,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13560,7 +13451,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13569,7 +13460,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13583,24 +13474,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13608,24 +13499,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14379,11 +14274,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16215,17 +16110,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18233,7 +18134,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22285,7 +22186,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22324,7 +22225,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22544,14 +22445,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22585,7 +22486,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22593,45 +22494,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22639,7 +22540,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22648,23 +22549,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22673,14 +22574,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22690,7 +22591,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22698,14 +22599,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22715,45 +22616,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22762,7 +22663,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22772,17 +22673,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22790,7 +22691,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22799,11 +22700,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22811,11 +22712,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22878,11 +22779,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22891,65 +22792,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22957,7 +22858,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22968,7 +22869,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22977,33 +22878,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23013,7 +22914,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23023,7 +22924,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23031,7 +22932,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23042,22 +22943,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23066,25 +22967,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23092,13 +22993,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23108,18 +23009,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23127,7 +23028,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23137,7 +23038,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23145,7 +23046,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23153,7 +23054,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23162,18 +23063,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23181,13 +23082,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23196,23 +23097,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23221,79 +23122,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24860,11 +24761,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24873,29 +24776,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24903,101 +24806,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25005,29 +24908,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25039,7 +24942,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25048,14 +24951,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25064,7 +24967,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25072,7 +24975,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25083,15 +24986,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25099,7 +25002,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25107,7 +25010,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25119,43 +25022,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25164,29 +25067,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26552,7 +26459,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26591,11 +26498,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/mr/LC_MESSAGES/messages.po b/locales/mr/LC_MESSAGES/messages.po index 250a1409b..8d9574294 100644 --- a/locales/mr/LC_MESSAGES/messages.po +++ b/locales/mr/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-01-25 14:18+0000\n" "Last-Translator: Prachi Joshi \n" "Language-Team: Marathi `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3638,11 +3638,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3651,11 +3651,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3663,26 +3663,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3694,38 +3694,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3734,21 +3734,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3757,11 +3757,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3769,15 +3769,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3785,21 +3785,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3952,7 +3952,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4308,7 +4308,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4630,7 +4630,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6689,11 +6689,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6729,7 +6730,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6742,29 +6744,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6776,65 +6778,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6843,18 +6845,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6863,11 +6865,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6877,7 +6879,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6886,11 +6888,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6902,24 +6904,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6927,17 +6929,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6948,11 +6950,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6960,14 +6962,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8743,7 +8745,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9359,40 +9361,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9400,25 +9406,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9426,45 +9432,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9475,31 +9481,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9903,7 +9909,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10008,90 +10014,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10100,26 +10106,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10127,28 +10133,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10156,33 +10162,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13233,86 +13239,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13321,116 +13323,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13440,51 +13371,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13492,7 +13383,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13500,18 +13391,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13520,7 +13411,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13531,7 +13422,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13549,7 +13440,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13558,7 +13449,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13572,24 +13463,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13597,24 +13488,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14368,11 +14263,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16204,17 +16099,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18222,7 +18123,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22274,7 +22175,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22313,7 +22214,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22533,14 +22434,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22574,7 +22475,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22582,45 +22483,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22628,7 +22529,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22637,23 +22538,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22662,14 +22563,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22679,7 +22580,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22687,14 +22588,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22704,45 +22605,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22751,7 +22652,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22761,17 +22662,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22779,7 +22680,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22788,11 +22689,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22800,11 +22701,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22867,11 +22768,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22880,65 +22781,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22946,7 +22847,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22957,7 +22858,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22966,33 +22867,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23002,7 +22903,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23012,7 +22913,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23020,7 +22921,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23031,22 +22932,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23055,25 +22956,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23081,13 +22982,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23097,18 +22998,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23116,7 +23017,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23126,7 +23027,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23134,7 +23035,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23142,7 +23043,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23151,18 +23052,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23170,13 +23071,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23185,23 +23086,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23210,79 +23111,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24849,11 +24750,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24862,29 +24765,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24892,101 +24795,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24994,29 +24897,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25028,7 +24931,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25037,14 +24940,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25053,7 +24956,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25061,7 +24964,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25072,15 +24975,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25088,7 +24991,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25096,7 +24999,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25108,43 +25011,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25153,29 +25056,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26541,7 +26448,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26580,11 +26487,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/pl/LC_MESSAGES/messages.po b/locales/pl/LC_MESSAGES/messages.po index ef2f7e116..17003e5d9 100644 --- a/locales/pl/LC_MESSAGES/messages.po +++ b/locales/pl/LC_MESSAGES/messages.po @@ -3,13 +3,15 @@ # This file is distributed under the same license as the Python Packaging User Guide package. # Maciej Olko , 2024, 2025. # Stan Ulbrych , 2025. +# Michał p Biegluk python router , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" -"PO-Revision-Date: 2025-08-17 01:01+0000\n" -"Last-Translator: Maciej Olko \n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" +"PO-Revision-Date: 2026-01-08 20:01+0000\n" +"Last-Translator: Michał p Biegluk python router " +"\n" "Language-Team: Polish \n" "Language: pl\n" @@ -18,7 +20,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.13\n" +"X-Generator: Weblate 5.15.1\n" #: ../source/contribute.rst:5 msgid "Contribute to this guide" @@ -57,12 +59,18 @@ msgid "" "`pull requests`__. If you're planning to write or edit the guide, please " "read the :ref:`style guide `." msgstr "" +"Większość pracy nad |pypug| odbywa się w `repozytorium projektu na " +"GitHubie`__. Aby zacząć, sprawdź listę `otwartych zgłoszeń`__ i `pull " +"requestów`__. Jeśli planujesz napisać lub edytować ten przewodnik, " +"przeczytaj :ref:`przewodnik po stylach `." #: ../source/contribute.rst:25 msgid "" "By contributing to the |PyPUG|, you're expected to follow the PSF's `Code of " "Conduct`__." msgstr "" +"Biorąc udział w projekcie |PyPUG|, zobowiązujesz się do przestrzegania " +"Kodeksu postępowania PSF__" #: ../source/contribute.rst:32 msgid "Documentation types" @@ -106,6 +114,12 @@ msgid "" "accomplishing the task. :doc:`example guide-style document `." msgstr "" +"Przewodniki koncentrują się na wykonaniu konkretnego zadania i mogą zakładać " +"pewien poziom wiedzy wstępnej. Są podobne do samouczków, ale mają wąski i " +"jasny zakres tematyczny oraz mogą zawierać wiele ostrzeżeń i dodatkowych " +"informacji w razie potrzeby. Mogą również omawiać różne podejścia do " +"wykonania zadania. :doc:`example guide-style document `." #: ../source/contribute.rst:60 ../source/discussions/index.rst:2 msgid "Discussions" @@ -3414,9 +3428,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3589,54 +3603,54 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3644,11 +3658,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3657,11 +3671,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3669,26 +3683,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3700,38 +3714,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3740,21 +3754,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3763,11 +3777,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3775,15 +3789,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3791,21 +3805,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3958,7 +3972,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4314,7 +4328,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4636,7 +4650,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6695,11 +6709,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6735,7 +6750,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6748,29 +6764,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6782,65 +6798,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6849,18 +6865,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6869,11 +6885,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6883,7 +6899,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6892,11 +6908,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6908,24 +6924,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6933,17 +6949,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6954,11 +6970,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6966,14 +6982,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8749,7 +8765,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -8893,6 +8909,10 @@ msgid "" "given in `the Appveyor documentation `__. " "The free tier of account is perfectly adequate for open source projects." msgstr "" +"Aby użyć Appveyor do zbudowania kół Windows dla swojego projektu, musisz " +"posiadać konto w tej usłudze. Instrukcje dotyczące zakładania konta znajdują " +"się w dokumentacji Appveyor `__. Bezpłatny " +"poziom konta jest w pełni wystarczający dla projektów open source." #: ../source/guides/supporting-windows-using-appveyor.rst:44 msgid "" @@ -8900,6 +8920,9 @@ msgid "" "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" +"Appveyor umożliwia integrację z `GitHub`_ i `Bitbucket`_, więc jeśli Twój " +"projekt jest hostowany w jednej z tych dwóch usług, skonfigurowanie " +"integracji Appveyor jest proste." #: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" @@ -8907,10 +8930,13 @@ msgid "" "will automatically build your project each time a commit occurs. This " "behaviour will be familiar to users of Travis." msgstr "" +"Po skonfigurowaniu konta Appveyor i dodaniu projektu, Appveyor automatycznie " +"zbuduje go po każdym zatwierdzeniu. To zachowanie będzie znane użytkownikom " +"Travisa." #: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "Adding Appveyor support to your project" -msgstr "" +msgstr "Dodawanie obsługi Appveyor do projektu" #: ../source/guides/supporting-windows-using-appveyor.rst:55 msgid "" @@ -8919,6 +8945,10 @@ msgid "" "be included in the file are covered in the Appveyor documentation. This " "guide will provide the details necessary to set up wheel builds." msgstr "" +"Aby zdefiniować sposób, w jaki Appveyor powinien zbudować Twój projekt, " +"musisz dodać do niego plik :file:`appveyor.yml`. Szczegółowe informacje na " +"temat zawartości pliku znajdują się w dokumentacji Appveyor. Ten przewodnik " +"zawiera informacje niezbędne do skonfigurowania kompilacji Wheel." #: ../source/guides/supporting-windows-using-appveyor.rst:60 msgid "" @@ -8930,10 +8960,17 @@ msgid "" "version of Visual Studio used includes 64-bit compilers with no additional " "setup)." msgstr "" +"Appveyor domyślnie zawiera wszystkie zestawy narzędzi kompilatora potrzebne " +"do budowania rozszerzeń dla Pythona. W Pythonie 2.7, 3.5+ oraz 32-bitowych " +"wersjach 3.3 i 3.4 narzędzia te działają od razu. Jednak w przypadku 64-" +"bitowych wersji Pythona 3.3 i 3.4 wymagana jest niewielka dodatkowa " +"konfiguracja, aby distutils wiedział, gdzie znaleźć kompilatory 64-bitowe. " +"(Od wersji 3.5 używana wersja programu Visual Studio zawiera kompilatory 64-" +"bitowe bez konieczności dodatkowej konfiguracji)." #: ../source/guides/supporting-windows-using-appveyor.rst:68 msgid "appveyor.yml" -msgstr "" +msgstr "appveyor.yml" #: ../source/guides/supporting-windows-using-appveyor.rst:74 msgid "" @@ -9365,40 +9402,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9406,25 +9447,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9432,45 +9473,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9481,31 +9522,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9909,7 +9950,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10014,90 +10055,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10106,26 +10147,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10133,28 +10174,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10162,33 +10203,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13239,86 +13280,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13327,116 +13364,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13446,51 +13412,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13498,7 +13424,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13506,18 +13432,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13526,7 +13452,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13537,7 +13463,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13555,7 +13481,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13564,7 +13490,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13578,24 +13504,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13603,24 +13529,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14374,11 +14304,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16210,17 +16140,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18228,7 +18164,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22280,7 +22216,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22319,7 +22255,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22539,14 +22475,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22580,7 +22516,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22588,45 +22524,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22634,7 +22570,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22643,23 +22579,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22668,14 +22604,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22685,7 +22621,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22693,14 +22629,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22710,45 +22646,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22757,7 +22693,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22767,17 +22703,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22785,7 +22721,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22794,11 +22730,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22806,11 +22742,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22873,11 +22809,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22886,65 +22822,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22952,7 +22888,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22963,7 +22899,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22972,33 +22908,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23008,7 +22944,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23018,7 +22954,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23026,7 +22962,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23037,22 +22973,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23061,25 +22997,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23087,13 +23023,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23103,18 +23039,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23122,7 +23058,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23132,7 +23068,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23140,7 +23076,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23148,7 +23084,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23157,18 +23093,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23176,13 +23112,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23191,23 +23127,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23216,79 +23152,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24855,11 +24791,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24868,29 +24806,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24898,101 +24836,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25000,29 +24938,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25034,7 +24972,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25043,14 +24981,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25059,7 +24997,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25067,7 +25005,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25078,15 +25016,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25094,7 +25032,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25102,7 +25040,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25114,43 +25052,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25159,29 +25097,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26547,7 +26489,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26586,11 +26528,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/pt_BR/LC_MESSAGES/messages.po b/locales/pt_BR/LC_MESSAGES/messages.po index 6005d8adf..c81cfd0a8 100644 --- a/locales/pt_BR/LC_MESSAGES/messages.po +++ b/locales/pt_BR/LC_MESSAGES/messages.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-08-07 00:01+0000\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Portuguese (Brazil) `, " +#| "host projects on `GitHub `_ and `Bitbucket " +#| "`_, and discuss issues on the `distutils-sig " +#| "mailing list `_ and `the Python Discourse forum `__." msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" "PyPA é um grupo de trabalho que mantém muitos dos projetos relevantes em " "pacotes Python. Eles mantêm um site em :doc:`pypa.io `, hospedam " @@ -4790,11 +4799,11 @@ msgstr "" "sig `_ e " "`o fórum Discourse do Python `__." -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "Python Package Index (PyPI)" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " @@ -4804,11 +4813,11 @@ msgstr "" "comunidade Python. Está aberto a todos os desenvolvedores Python para " "consumir e distribuir suas distribuições." -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "pypi.org" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " @@ -4818,22 +4827,22 @@ msgstr "" "Index (PyPI)`. Ele substituiu o nome de domínio do índice legado, " "``pypi.python.org``, em 2017. Ele é tornado possível pelo :ref:`warehouse`." -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "pyproject.toml" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" "O arquivo de especificação agnóstica de ferramenta para :term:`Projetos " "`. Definido na :pep:`518`." -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "Lançamento" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." @@ -4841,7 +4850,7 @@ msgstr "" "Um snapshot de um :term:`Projeto` em um determinado ponto no tempo, denotado " "por um identificador de versão." -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -4854,11 +4863,11 @@ msgstr "" "formato de distribuição fonte e um formato de distribuição de instalador do " "Windows." -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "Requisito" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -4872,11 +4881,11 @@ msgstr "" "podem ser consideradas um \"requisito\". Para obter mais informações, " "consulte a referência de :ref:`pip:pip install`." -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "Especificador de Requisitos" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -4889,11 +4898,11 @@ msgstr "" "onde \"foo\" é o nome do projeto e a parte \">=1.3\" é " "o :term:`Especificador de Versão`" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "Arquivo de Requisitos" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " @@ -4903,18 +4912,18 @@ msgstr "" "ser instalados usando :ref:`pip`. Para mais informações, veja a " "documentação :ref:`pip` em :ref:`pip:Requirements Files`." -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 #, fuzzy msgid "Root License Directory" msgstr "Projetos em subdiretórios" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 #, fuzzy #| msgid "Local directory:" msgid "License Directory" msgstr "Diretório local:" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -4926,17 +4935,17 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "setup.py" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "setup.cfg" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." @@ -4944,11 +4953,11 @@ msgstr "" "Os arquivos de especificação do projeto para :ref:`distutils` " "e :ref:`setuptools`. Veja também :term:`pyproject.toml`." -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "Arquivo Fonte" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` ou :term:`Distribuição Construída `." -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "Distribuição Fonte (ou \"sdist\")" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 #, fuzzy msgid "" "A :term:`distribution ` format (usually generated " @@ -4978,11 +4987,11 @@ msgstr "" "ou para gerar uma :term:`Distribuição Construída `. " "Veja :ref:`package-formats` para mais informações." -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "Pacote de Sistemas" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." @@ -4990,11 +4999,11 @@ msgstr "" "Um pacote fornecido em um formato nativo para o sistema operacional, por " "exemplo, um arquivo rpm ou dpkg." -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "Especificador de Versão" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -5009,11 +5018,11 @@ msgstr "" "oferece suporte atualmente. O suporte para esta especificação foi " "implementado no :ref:`setuptools` v8.0 e no :ref:`pip` v6.0." -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "Ambiente Virtual" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -5025,16 +5034,16 @@ msgstr "" "sistema. Para obter mais informações, consulte a seção sobre :ref:`Creating " "and using Virtual Environments`." -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 #, fuzzy msgid "Wheel Format" msgstr "Formato de arquivos" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "Wheel" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -5042,22 +5051,22 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 #, fuzzy msgid "Wheel Project" msgstr "Projeto" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "Conjunto de Trabalho" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -5256,7 +5265,7 @@ msgstr "Descrição" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "Exemplos" @@ -5661,7 +5670,7 @@ msgstr "" "O projeto `pandas-gbq`_ permite acessar resultados de pesquisa com `Pandas`_." #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "Referências" @@ -6062,7 +6071,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -8836,11 +8845,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -8879,7 +8889,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -8892,32 +8903,32 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 #, fuzzy msgid "Advanced example" msgstr "Um exemplo completo" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 #, fuzzy -#| msgid "The minimum required versions of the respective tools are:" -msgid "The license expressions for these projects are:" -msgstr "As versões mínimas exigidas das respectivas ferramentas são:" +#| msgid "in favour of ``Requires-Dist``" +msgid "The appropriate license expressions are:" +msgstr "em favor de ``Requires-Dist``" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -8929,68 +8940,68 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 #, fuzzy msgid "Expression examples" msgstr "Um exemplo completo" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 #, fuzzy #| msgid "in favour of ``Requires-Dist``" msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "em favor de ``Requires-Dist``" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -8999,18 +9010,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -9019,11 +9030,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -9033,7 +9044,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -9042,11 +9053,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -9058,24 +9069,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -9083,17 +9094,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -9104,11 +9115,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -9116,14 +9127,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -11603,8 +11614,13 @@ msgstr "" "conjunto, fornecem testes automatizados no Linux, Mac e Windows:" #: ../source/guides/supporting-multiple-python-versions.rst:65 +#, fuzzy +#| msgid "" +#| "`Travis CI `_ provides both a Linux and a macOS " +#| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#| "bit while the macOS is 10.9.2 at the time of writing." msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -12463,41 +12479,47 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +#, fuzzy +#| msgid "Building binary extensions" +msgid "Build backends for extension modules" +msgstr "Construindo extensões binárias" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy msgid "Building distributions" msgstr "Distribuição Construída" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -12505,14 +12527,14 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 #, fuzzy msgid "" "If you have :term:`extension modules ` and want to " @@ -12523,12 +12545,12 @@ msgstr "" "plataformas, use :ref:`cibuildwheel` como parte de sua configuração de CI " "para construir wheels distribuíveis." -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 #, fuzzy msgid "Uploading to PyPI" msgstr "Enviando seu Projeto para PyPI" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -12536,45 +12558,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -12585,37 +12607,37 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 #, fuzzy msgid ":ref:`Flit`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 #, fuzzy msgid ":ref:`Hatch`," msgstr "pip, :ref:`bandersnatch`" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 #, fuzzy msgid ":doc:`nox `," msgstr ":doc:`Documentação `" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 #, fuzzy msgid ":ref:`PDM`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 #, fuzzy msgid ":ref:`Pipenv`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 #, fuzzy msgid ":ref:`Poetry`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 #, fuzzy msgid ":doc:`tox `." msgstr ":doc:`Documentação `" @@ -13172,7 +13194,7 @@ msgid "``license`` and ``license-files``" msgstr "``license``" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -13293,14 +13315,14 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 #, fuzzy @@ -13308,59 +13330,59 @@ msgstr "" msgid "``license-files``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -13368,13 +13390,13 @@ msgstr "" "Isso ajudará a caixa de pesquisa do PyPI a sugerir o seu projeto quando as " "pessoas procuram essas palavras-chave." -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "``classifiers``" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -13382,7 +13404,7 @@ msgstr "" "Uma lista de classificadores do PyPI que se aplicam ao seu projeto. " "Verifique a `lista completa de possibilidades `_." -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 #, fuzzy msgid "" "Although the list of classifiers is often used to declare what Python " @@ -13397,7 +13419,7 @@ msgstr "" "projetos. Para realmente restringir em quais versões do Python um projeto " "pode ser instalado, use o argumento :ref:`python_requires`." -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 #, fuzzy msgid "" "To prevent a package from being uploaded to PyPI, use the special " @@ -13408,13 +13430,13 @@ msgstr "" "especial ``'Private :: Do Not Upload'``. PyPI sempre rejeitará pacotes com " "classificadores começando com ``\"Private ::'``." -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -13422,7 +13444,7 @@ msgstr "" "Uma lista de URLs associadas ao seu projeto, exibida na barra lateral " "esquerda da página do projeto PyPI." -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -13430,7 +13452,7 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 #, fuzzy #| msgid "" #| "Note that if the key contains spaces, it needs to be quoted, e.g., " @@ -13445,21 +13467,21 @@ msgstr "" "``Website = \"https://example.com\"``, mas ``\"Official Website\" = " "\"https://example.com\"``." -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -13467,11 +13489,11 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "Plugins avançados" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " @@ -13481,15 +13503,15 @@ msgstr "" "Pytest_ e Pygments_. Para criar tal plugin, você precisa declará-lo em uma " "subtabela de ``[project.entry-points]`` assim:" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "Veja o :ref:`guia Plugin ` para mais informações." -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "Um exemplo completo" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -13499,7 +13521,7 @@ msgstr "" "= \"<= 3.10\"`` aqui. `Este post de blog `_ " "contém algumas informações sobre possíveis problemas." -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -17547,12 +17569,19 @@ msgstr "" "WHEEL são os metadados de wheel específicos para uma construção do pacote." #: ../source/specifications/binary-distribution-format.rst:239 +#, fuzzy +#| msgid "" +#| "RECORD is a list of (almost) all the files in the wheel and their secure " +#| "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " +#| "hash of itself, must include its hash. The hash algorithm must be sha256 " +#| "or better; specifically, md5 and sha1 are not permitted, as signed wheel " +#| "files rely on the strong hashes in RECORD to validate the integrity of " +#| "the archive." msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" "RECORD é uma lista de (quase) todos os arquivos no wheel seus hashes " "seguros. Ao contrário da PEP 376, nenhum arquivo, exceto RECORD, pode conter " @@ -17561,104 +17590,103 @@ msgstr "" "wheel assinados contam com hashes fortes em RECORD para validar a " "integridade do arquivo." -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "INSTALLER e REQUESTED da PEP 376 não são incluídos no arquivo." -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" -"RECORD.jws é usado para assinaturas digitais. Não é mencionado no RECORD." - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -"RECORD.p7s é permitido como cortesia para qualquer pessoa que prefira usar " -"assinaturas S/MIME para proteger seus arquivos wheels. Não é mencionado no " -"RECORD." -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 +#, fuzzy +#| msgid "" +#| "During extraction, wheel installers verify all the hashes in RECORD " +#| "against the file contents. Apart from RECORD and its signatures, " +#| "installation will fail if any file in the archive is not both mentioned " +#| "and correctly hashed in RECORD." msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" "Durante a extração, os instaladores de wheels verificam todos os hashes em " "RECORD em relação ao conteúdo do arquivo. Além de RECORD e suas assinaturas, " "a instalação falhará se qualquer arquivo no arquivo não for mencionado e com " "hash correto em RECORD." -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 #, fuzzy #| msgid "Project name" msgid "Subdirectory name" msgstr "Nome do projeto" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 #, fuzzy #| msgid "``license``" msgid "``licenses``" msgstr "``license``" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 #, fuzzy #| msgid ":pep:`600`" msgid ":pep:`639`" msgstr ":pep:`600`" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 #, fuzzy #| msgid "``license``" msgid "``license_files``" msgstr "``license``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 #, fuzzy #| msgid "``LIB``" msgid "``LICENSES``" msgstr "``LIB``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 #, fuzzy #| msgid ":pep:`571`" msgid ":pep:`770`" msgstr ":pep:`571`" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 #, fuzzy #| msgid "The .dist-info directory" msgid "The :file:`.dist-info/licenses/` directory" msgstr "O diretório .dist-info" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -17667,24 +17695,24 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 #, fuzzy #| msgid "The .dist-info directory" msgid "The :file:`.dist-info/sboms/` directory" msgstr "O diretório .dist-info" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "O diretório .data" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " @@ -17694,7 +17722,7 @@ msgstr "" "para o diretório .data, nomeado como o diretório .dist-info, mas com a " "extensão .data/::" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " @@ -17704,113 +17732,16 @@ msgstr "" "documentação e assim por diante da distribuição. Durante a instalação, o " "conteúdo desses subdiretórios é movido para seus caminhos de destino." -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "Arquivos wheels assinados" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" -"Os arquivos wheels incluem um RECORD estendido que permite assinaturas " -"digitais. O RECORD da PEP 376 foi alterado para incluir um hash seguro " -"``digestname=urlsafe_b64encode_nopad(digest)`` (codificação base64 de " -"urlsafe sem caracteres ao final =) como a segunda coluna em vez de um " -"md5sum. Todas as entradas possíveis são hash, incluindo quaisquer arquivos " -"gerados, como arquivos .pyc, mas não RECORD, que não pode conter seu próprio " -"hash. Por exemplo::" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" -"O(s) arquivo(s) de assinatura RECORD.jws e RECORD.p7s não são mencionados em " -"RECORD, pois eles só podem ser adicionados após RECORD ser gerado. Todos os " -"outros arquivos no arquivo devem ter um hash correto em RECORD ou a " -"instalação falhará." - -#: ../source/specifications/binary-distribution-format.rst:322 -#, fuzzy -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" -"Se assinaturas da web JSON forem usadas, uma ou mais assinaturas JSON Web " -"Signature JSON Serialization (JWS-JS) serão armazenadas em um arquivo " -"RECORD.jws adjacente a RECORD. JWS é usado para assinar RECORD incluindo o " -"hash SHA-256 de RECORD como a carga JSON da assinatura::" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "(O valor hash é o mesmo formato usado em RECORD.)" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" -"Se RECORD.p7s for usado, ele deve conter uma assinatura de formato S/MIME " -"separada de RECORD." - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" -"Um instalador de wheel não precisa entender as assinaturas digitais, mas " -"DEVE verificar os hashes em RECORD em relação ao conteúdo do arquivo " -"extraído. Quando o instalador verifica os hashes do arquivo em relação ao " -"RECORD, um verificador de assinatura separado só precisa estabelecer se " -"RECORD corresponde à assinatura." - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "Veja" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "https://datatracker.ietf.org/doc/html/rfc7515" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "https://datatracker.ietf.org/doc/html/rfc7517" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "FAQ" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "Wheel define um diretório .data. Devo colocar todos os meus dados lá?" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -17826,64 +17757,11 @@ msgstr "" "resource)`` ainda que *esses* arquivos normalmente não sejam distribuídos no " "diretório ``.data`` do *wheel*." -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "Por que o wheel inclui assinaturas anexadas?" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" -"Assinaturas anexadas são mais convenientes do que assinaturas separadas " -"porque elas viajam com o arquivo. Uma vez que apenas os arquivos individuais " -"são assinados, o arquivo pode ser recompactado sem invalidar a assinatura ou " -"os arquivos individuais podem ser verificados sem ter que baixar todo o " -"arquivo." - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "Por que wheel permite assinaturas JWS?" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" -"As especificações JOSE das quais o JWS faz parte foram projetadas para serem " -"fáceis de implementar, um recurso que também é um dos principais objetivos " -"do projeto da roda. O JWS produz uma implementação puro Python concisa e " -"útil." - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "Por que wheel também permite assinaturas S/MIME?" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" -"Assinaturas S/MIME são permitidas para usuários que precisam ou querem usar " -"uma infraestrutura de chaves públicas existente com o wheel." - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" -"Pacotes assinados são apenas um bloco de construção básico em um sistema de " -"atualização segura de pacotes. Wheel só fornece o bloco de construção." - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "Qual é a diferença entre \"purelib\" e \"platlib\"?" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -17895,7 +17773,7 @@ msgstr "" "puro Python em '/usr/lib/pythonX.Y/site-packages' e pacotes dependentes de " "plataforma em '/usr/lib64/pythonX.Y/site-packages'." -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -17907,7 +17785,7 @@ msgstr "" "Purelib: true\" com os mesmos arquivos na raiz, e é válido ter arquivos nas " "categorias \"purelib\" e \"platlib\"." -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " @@ -17917,11 +17795,11 @@ msgstr "" "dependendo se é puro Python ou não e esses arquivos devem estar na raiz com " "a configuração apropriada fornecida para \"Root-is-purelib\"." -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "É possível importar código Python diretamente de um arquivo wheel?" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -17935,7 +17813,7 @@ msgstr "" "``sys.path``. No entanto, embora esse comportamento seja uma consequência " "natural do design do formato, não é recomendável confiar nele." -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -17954,7 +17832,7 @@ msgstr "" "segurança, ou integração completa com o maquinário de construção padrão para " "extensões C, publicando arquivos de cabeçalho no local apropriado)." -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -17988,7 +17866,7 @@ msgstr "" "abstratos internamente, a interface com componentes externos ainda pode " "exigir a disponibilidade de um arquivo real no disco." -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -18002,7 +17880,7 @@ msgstr "" "esteja ciente de que muitos projetos exigirão que uma falha seja reproduzida " "com um pacote totalmente instalado antes de aceitá-lo como um bug genuíno." -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -18016,18 +17894,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "Histórico" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 #, fuzzy msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " @@ -18037,7 +17915,7 @@ msgstr "" "para alinhá-las com o que as ferramentas populares realmente fazem " "(fevereiro de 2021)." -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -18045,7 +17923,7 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 #, fuzzy #| msgid "" @@ -18058,17 +17936,21 @@ msgstr "" "Este documento descreve o formato dos especificadores de dependência " "conforme originalmente especificado na :pep:`508`." -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "Apêndice" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "Exemplo de implementação de urlsafe-base64-nopad::" @@ -18902,12 +18784,20 @@ msgstr "" "\"2.1\", \"2.2\" e \"2.3\"." #: ../source/specifications/core-metadata.rst:55 -msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +#, fuzzy +#| msgid "" +#| "Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " +#| "greater than the highest version they support, and MUST fail if " +#| "``metadata_version`` has a greater major version than the highest version " +#| "they support (as described in the :ref:`Version specifier specification " +#| "`, the major version is the value before the first " +#| "dot)." +msgid "" +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" "Ferramentas automatizadas que consomem metadados DEVEM avisar se " "``metadata_version`` é maior que a versão mais alta à qual oferecem suporte, " @@ -21224,7 +21114,13 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" @@ -21232,12 +21128,12 @@ msgstr "" "pip, o instalador recomendado para pacotes Python (http://" "pip.readthedocs.org/en/stable/)" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" "A biblioteca de PEG do parsley. (https://pypi.python.org/pypi/parsley/)" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -23551,7 +23447,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 #, fuzzy msgid "Recommendations" msgstr "Recomendações de ferramentas" @@ -28243,7 +28139,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -28282,7 +28178,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -28504,14 +28400,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 #, fuzzy msgid "As an example:" msgstr "Um exemplo completo" @@ -28546,7 +28442,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -28555,45 +28451,45 @@ msgid "``name``: The normalized name of the project." msgstr "O nome do projeto." #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -28601,7 +28497,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -28610,23 +28506,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 #, fuzzy msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " @@ -28638,14 +28534,14 @@ msgstr "" "Vários hashes podem ser incluídos e cabe ao consumidor decidir o que fazer " "com vários hashes (pode validar todos eles ou um subconjunto deles, ou nada)." -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 #, fuzzy msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " @@ -28662,7 +28558,7 @@ msgstr "" "DEVE sempre ser incluído. No momento da escrita, ``sha256`` especificamente " "é recomendado." -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -28670,14 +28566,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -28687,45 +28583,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -28734,7 +28630,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -28744,17 +28640,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -28762,7 +28658,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -28771,11 +28667,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -28783,11 +28679,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -28851,12 +28747,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 #, fuzzy msgid "Version + Format Selection" msgstr "Versão" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -28865,65 +28761,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -28931,7 +28827,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -28942,7 +28838,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -28951,33 +28847,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -28987,7 +28883,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -28997,7 +28893,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -29005,7 +28901,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -29016,22 +28912,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -29040,25 +28936,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -29066,13 +28962,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -29082,19 +28978,19 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 #, fuzzy msgid "Endpoint Configuration" msgstr "Configurações comuns" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -29102,7 +28998,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -29112,7 +29008,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -29120,7 +29016,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -29128,7 +29024,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -29137,18 +29033,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -29156,13 +29052,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -29171,23 +29067,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -29196,79 +29092,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -30928,11 +30824,13 @@ msgstr "Igualdade arbitrária" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -30941,30 +30839,30 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 #, fuzzy msgid "Handling of pre-releases" msgstr "Instalando pré-lançamentos" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -30972,102 +30870,102 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "Por padrão, ferramentas de resolução de dependências DEVEM:" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "excluir todos os outros pré-lançamentos da consideração" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "aceitando pré-lançamentos para todos os especificadores de versão" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 #, fuzzy msgid "Direct references" msgstr "Referências" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -31075,29 +30973,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -31109,7 +31007,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 #, fuzzy msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " @@ -31125,14 +31023,14 @@ msgstr "" "da escrita, essa lista consistia em 'md5', 'sha1', 'sha224', 'sha256', " "'sha384' e 'sha512'." -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -31141,7 +31039,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -31149,7 +31047,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -31160,17 +31058,17 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 #, fuzzy msgid "Remote URL examples::" msgstr "Por exemplo::" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 #, fuzzy msgid "File URLs" msgstr "URLs de arquivos" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -31178,7 +31076,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -31186,7 +31084,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -31198,43 +31096,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "Resumo das diferenças em relação a pkg_resources.parse_version" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -31243,29 +31141,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 #, fuzzy msgid "Python Virtual Environments" @@ -33062,7 +32964,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -33117,12 +33019,21 @@ msgid "Creating a LICENSE" msgstr "Criando um LICENSE" #: ../source/tutorials/packaging-projects.rst:253 -msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +#, fuzzy +#| msgid "" +#| "It's important for every package uploaded to the Python Package Index to " +#| "include a license. This tells users who install your package the terms " +#| "under which they can use your package. For help picking a license, see " +#| "https://choosealicense.com/. Once you have chosen a license, " +#| "open :file:`LICENSE` and enter the license text. For example, if you had " +#| "chosen the MIT license:" +msgid "" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" "É importante que cada pacote enviado para o Índice de Pacotes do Python " "inclua uma licença. Isso informa aos usuários que instalam seu pacote os " @@ -33462,6 +33373,158 @@ msgid "" "the file is empty)." msgstr "" +#~ msgid "" +#~ "RECORD.jws is used for digital signatures. It is not mentioned in RECORD." +#~ msgstr "" +#~ "RECORD.jws é usado para assinaturas digitais. Não é mencionado no RECORD." + +#~ msgid "" +#~ "RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/" +#~ "MIME signatures to secure their wheel files. It is not mentioned in " +#~ "RECORD." +#~ msgstr "" +#~ "RECORD.p7s é permitido como cortesia para qualquer pessoa que prefira " +#~ "usar assinaturas S/MIME para proteger seus arquivos wheels. Não é " +#~ "mencionado no RECORD." + +#~ msgid "Signed wheel files" +#~ msgstr "Arquivos wheels assinados" + +#~ msgid "" +#~ "Wheel files include an extended RECORD that enables digital signatures. " +#~ "PEP 376's RECORD is altered to include a secure hash " +#~ "``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding " +#~ "with no trailing = characters) as the second column instead of an " +#~ "md5sum. All possible entries are hashed, including any generated files " +#~ "such as .pyc files, but not RECORD which cannot contain its own hash. For " +#~ "example::" +#~ msgstr "" +#~ "Os arquivos wheels incluem um RECORD estendido que permite assinaturas " +#~ "digitais. O RECORD da PEP 376 foi alterado para incluir um hash seguro " +#~ "``digestname=urlsafe_b64encode_nopad(digest)`` (codificação base64 de " +#~ "urlsafe sem caracteres ao final =) como a segunda coluna em vez de um " +#~ "md5sum. Todas as entradas possíveis são hash, incluindo quaisquer " +#~ "arquivos gerados, como arquivos .pyc, mas não RECORD, que não pode conter " +#~ "seu próprio hash. Por exemplo::" + +#~ msgid "" +#~ "The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in " +#~ "RECORD at all since they can only be added after RECORD is generated. " +#~ "Every other file in the archive must have a correct hash in RECORD or the " +#~ "installation will fail." +#~ msgstr "" +#~ "O(s) arquivo(s) de assinatura RECORD.jws e RECORD.p7s não são mencionados " +#~ "em RECORD, pois eles só podem ser adicionados após RECORD ser gerado. " +#~ "Todos os outros arquivos no arquivo devem ter um hash correto em RECORD " +#~ "ou a instalação falhará." + +#, fuzzy +#~ msgid "" +#~ "If JSON web signatures are used, one or more JSON Web Signature JSON " +#~ "Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent " +#~ "to RECORD. JWS is used to sign RECORD by including the SHA-256 hash of " +#~ "RECORD as the signature's JSON payload:" +#~ msgstr "" +#~ "Se assinaturas da web JSON forem usadas, uma ou mais assinaturas JSON Web " +#~ "Signature JSON Serialization (JWS-JS) serão armazenadas em um arquivo " +#~ "RECORD.jws adjacente a RECORD. JWS é usado para assinar RECORD incluindo " +#~ "o hash SHA-256 de RECORD como a carga JSON da assinatura::" + +#~ msgid "(The hash value is the same format used in RECORD.)" +#~ msgstr "(O valor hash é o mesmo formato usado em RECORD.)" + +#~ msgid "" +#~ "If RECORD.p7s is used, it must contain a detached S/MIME format signature " +#~ "of RECORD." +#~ msgstr "" +#~ "Se RECORD.p7s for usado, ele deve conter uma assinatura de formato S/MIME " +#~ "separada de RECORD." + +#~ msgid "" +#~ "A wheel installer is not required to understand digital signatures but " +#~ "MUST verify the hashes in RECORD against the extracted file contents. " +#~ "When the installer checks file hashes against RECORD, a separate " +#~ "signature checker only needs to establish that RECORD matches the " +#~ "signature." +#~ msgstr "" +#~ "Um instalador de wheel não precisa entender as assinaturas digitais, mas " +#~ "DEVE verificar os hashes em RECORD em relação ao conteúdo do arquivo " +#~ "extraído. Quando o instalador verifica os hashes do arquivo em relação ao " +#~ "RECORD, um verificador de assinatura separado só precisa estabelecer se " +#~ "RECORD corresponde à assinatura." + +#~ msgid "See" +#~ msgstr "Veja" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7515" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7515" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7517" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7517" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" + +#~ msgid "Why does wheel include attached signatures?" +#~ msgstr "Por que o wheel inclui assinaturas anexadas?" + +#~ msgid "" +#~ "Attached signatures are more convenient than detached signatures because " +#~ "they travel with the archive. Since only the individual files are " +#~ "signed, the archive can be recompressed without invalidating the " +#~ "signature or individual files can be verified without having to download " +#~ "the whole archive." +#~ msgstr "" +#~ "Assinaturas anexadas são mais convenientes do que assinaturas separadas " +#~ "porque elas viajam com o arquivo. Uma vez que apenas os arquivos " +#~ "individuais são assinados, o arquivo pode ser recompactado sem invalidar " +#~ "a assinatura ou os arquivos individuais podem ser verificados sem ter que " +#~ "baixar todo o arquivo." + +#~ msgid "Why does wheel allow JWS signatures?" +#~ msgstr "Por que wheel permite assinaturas JWS?" + +#~ msgid "" +#~ "The JOSE specifications of which JWS is a part are designed to be easy to " +#~ "implement, a feature that is also one of wheel's primary design goals. " +#~ "JWS yields a useful, concise pure-Python implementation." +#~ msgstr "" +#~ "As especificações JOSE das quais o JWS faz parte foram projetadas para " +#~ "serem fáceis de implementar, um recurso que também é um dos principais " +#~ "objetivos do projeto da roda. O JWS produz uma implementação puro Python " +#~ "concisa e útil." + +#~ msgid "Why does wheel also allow S/MIME signatures?" +#~ msgstr "Por que wheel também permite assinaturas S/MIME?" + +#~ msgid "" +#~ "S/MIME signatures are allowed for users who need or want to use existing " +#~ "public key infrastructure with wheel." +#~ msgstr "" +#~ "Assinaturas S/MIME são permitidas para usuários que precisam ou querem " +#~ "usar uma infraestrutura de chaves públicas existente com o wheel." + +#~ msgid "" +#~ "Signed packages are only a basic building block in a secure package " +#~ "update system. Wheel only provides the building block." +#~ msgstr "" +#~ "Pacotes assinados são apenas um bloco de construção básico em um sistema " +#~ "de atualização segura de pacotes. Wheel só fornece o bloco de construção." + +#, fuzzy +#~| msgid "The minimum required versions of the respective tools are:" +#~ msgid "The license expressions for these projects are:" +#~ msgstr "As versões mínimas exigidas das respectivas ferramentas são:" + #~ msgid "`Vagrant `_" #~ msgstr "`Vagrant `_" diff --git a/locales/ro/LC_MESSAGES/messages.po b/locales/ro/LC_MESSAGES/messages.po index 8b18f7e59..094322a6b 100644 --- a/locales/ro/LC_MESSAGES/messages.po +++ b/locales/ro/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2021-08-20 01:32+0000\n" "Last-Translator: GUILHERME FERNANDES NETO \n" "Language-Team: Romanian `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3639,11 +3639,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3652,11 +3652,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "Specificator Cerință" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3664,26 +3664,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3695,38 +3695,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3735,21 +3735,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3758,11 +3758,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3770,15 +3770,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3786,23 +3786,23 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 #, fuzzy #| msgid "Per Project Index" msgid "Wheel Project" msgstr "Pe Indexul Proiectului" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3955,7 +3955,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4311,7 +4311,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4633,7 +4633,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6694,11 +6694,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6734,7 +6735,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6747,29 +6749,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6781,65 +6783,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6848,18 +6850,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6868,11 +6870,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6882,7 +6884,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6891,11 +6893,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6907,24 +6909,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6932,17 +6934,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6953,11 +6955,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6965,14 +6967,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8748,7 +8750,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9364,40 +9366,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9405,25 +9411,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9431,45 +9437,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9480,31 +9486,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9908,7 +9914,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10013,90 +10019,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10105,26 +10111,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10132,28 +10138,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10161,33 +10167,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13238,86 +13244,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13326,116 +13328,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13445,51 +13376,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13497,7 +13388,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13505,18 +13396,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13525,7 +13416,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13536,7 +13427,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13554,7 +13445,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13563,7 +13454,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13577,24 +13468,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13602,24 +13493,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14373,11 +14268,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16209,17 +16104,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18227,7 +18128,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22279,7 +22180,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22318,7 +22219,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22538,14 +22439,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22579,7 +22480,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22587,45 +22488,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22633,7 +22534,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22642,23 +22543,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22667,14 +22568,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22684,7 +22585,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22692,14 +22593,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22709,45 +22610,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22756,7 +22657,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22766,17 +22667,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22784,7 +22685,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22793,11 +22694,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22805,11 +22706,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22872,11 +22773,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22885,65 +22786,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22951,7 +22852,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22962,7 +22863,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22971,33 +22872,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23007,7 +22908,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23017,7 +22918,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23025,7 +22926,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23036,22 +22937,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23060,25 +22961,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23086,13 +22987,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23102,18 +23003,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23121,7 +23022,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23131,7 +23032,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23139,7 +23040,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23147,7 +23048,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23156,18 +23057,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23175,13 +23076,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23190,23 +23091,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23215,79 +23116,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24854,11 +24755,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24867,29 +24770,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24897,101 +24800,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24999,29 +24902,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25033,7 +24936,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25042,14 +24945,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25058,7 +24961,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25066,7 +24969,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25077,15 +24980,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25093,7 +24996,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25101,7 +25004,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25113,43 +25016,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25158,29 +25061,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26546,7 +26453,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26585,11 +26492,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/ru/LC_MESSAGES/messages.po b/locales/ru/LC_MESSAGES/messages.po index 42dd75242..8d9dfee08 100644 --- a/locales/ru/LC_MESSAGES/messages.po +++ b/locales/ru/LC_MESSAGES/messages.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-06-07 08:01+0000\n" "Last-Translator: da070116 \n" "Language-Team: Russian `, " +#| "host projects on `GitHub `_ and `Bitbucket " +#| "`_, and discuss issues on the `distutils-sig " +#| "mailing list `_ and `the Python Discourse forum `__." msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" "PyPA - это рабочая группа, которая поддерживает множество соответствующих " "проектов по упаковке Python. Они поддерживают сайт по адресу :doc:`pypa.io " @@ -4640,11 +4655,11 @@ msgstr "" "distutils-sig.python.org/>`_ и на форуме Python Discourse `__." -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "Индекс пакетов Python (PyPI)" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " @@ -4654,11 +4669,11 @@ msgstr "" "сообщества Python. Он открыт для всех разработчиков Python для потребления и " "распространения их дистрибутивов." -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "pypi.org" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " @@ -4668,22 +4683,22 @@ msgstr "" "Index (PyPI)`. Он заменил устаревшее доменное имя индекса, " "``pypi.python.org``, в 2017 году. Он работает на базе :ref:`warehouse`." -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "pyproject.toml" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" "Инструмент-агностик:термин: файл спецификации \"Проект\". Определен " "в :pep:`518'." -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "Выпуск" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." @@ -4691,7 +4706,7 @@ msgstr "" "Снимок :term:`Project` в определенный момент времени, обозначаемый " "идентификатором версии." -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -4703,11 +4718,11 @@ msgstr "" "версия 1.0 проекта была выпущена, она может быть доступна как в формате " "распределения источника, так и в формате Windows." -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "Требование" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -4721,11 +4736,11 @@ msgstr "" "которые все могут считаться \"требованием\". Для получения дополнительной " "информации смотрите ссылку :ref:`pip:pip install`." -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "Спецификатор требований" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -4737,11 +4752,11 @@ msgstr "" "specifiers`. Например, \"foo>=1.3\" - это спецификатор требований, где " "\"foo\" - это имя проекта, а часть \">=1.3\" - это :term:`Version Specifier`" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "Требования к файлам" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " @@ -4751,15 +4766,15 @@ msgstr "" "быть установлен с помощью :ref:`pip'. Дополнительные сведения см. " "в :ref:`pip'''' docs on :ref:`pip:Requirements Files`." -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "Каталог корневых лицензий" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "Каталог лицензий" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -4779,17 +4794,17 @@ msgstr "" "директория, к которой относятся пути, записанные в ``License-" "File`` :term:`Core Metadata Field``." -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "setup.py" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "setup.cfg" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." @@ -4797,11 +4812,11 @@ msgstr "" "Файлы спецификаций проекта для:ref:`distutils' и :ref:`setuptools'. См. " "также :term:`pyproject.toml'." -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "Источник Архив" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` " "или :term:`Built Distribution`." -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "Распространение исходных текстов (или \"sdist\")" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -4830,11 +4845,11 @@ msgstr "" "дистрибутива``. Дополнительную информацию смотрите в : ссылка:`Форматы " "пакетов`." -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "Системный пакет" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." @@ -4842,11 +4857,11 @@ msgstr "" "Пакет, предоставляемый в формате, имеющем отношение к операционной системе, " "например, файл rpm или dpkg." -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "Спецификатор версии" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -4860,11 +4875,11 @@ msgstr "" "настоящее время поддерживаются. Поддержка этой спецификации была реализована " "в :ref:`setuptools` v8.0 и :ref:`pip` v6.0." -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "Виртуальная среда" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -4876,15 +4891,15 @@ msgstr "" "системы. Для получения дополнительной информации см. раздел :ref:`Создание и " "использование виртуальных сред`." -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "Формат колеса" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "Колесо" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -4896,11 +4911,11 @@ msgstr "" "distribution-format`. Дополнительную информацию см. в : ссылка:`пакетные " "форматы`. Не путать с его эталонной реализацией, : термин:``Колесо проекта``." -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "Проект Колесо" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." @@ -4908,11 +4923,11 @@ msgstr "" "Эталонная реализация PyPA формата : термин:`Формат колеса`; см. : " "ссылка:`колесо`." -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "Рабочая группа" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -5108,7 +5123,7 @@ msgstr "Описание" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "Примеры" @@ -5514,7 +5529,7 @@ msgstr "" "`Pandas`_." #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "Ссылка" @@ -5989,7 +6004,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" "Однако этот синтаксис немного непрактичен: поскольку имя точки входа, " "которую мы определили выше, не совпадает с именем пакета, нам нужно явно " @@ -8777,11 +8792,12 @@ msgstr "Примеры лицензирования и пользователь #| "pyproject_config>` and :ref:`flit ` don't " #| "support :pep:`639` yet." msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" "В :pep:`639` указан способ объявления лицензии проекта, пути к файлам " "лицензии и другая юридически необходимая информация. Этот документ призван " @@ -8836,7 +8852,11 @@ msgstr "" "Или, если проект использовал :file:`setup.cfg`, в его таблице ``[metadata]``:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +#, fuzzy +#| msgid "" +#| "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" "Выходные метаданные Core Metadata для дистрибутивных пакетов будут такими:" @@ -8857,11 +8877,11 @@ msgstr "" "при установке; :file:`/` - корень соответствующего архива, а ``{VERSION}`` - " "версия релиза Setuptools в метаданных ядра." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "Расширенный пример" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " @@ -8871,11 +8891,14 @@ msgstr "" "которые хранятся в каталогах :file:`setuptools/_vendor/` " "и :file:`pkg_resources/_vendor/`; а именно:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" -msgstr "Лицензионные выражения для этих проектов следующие:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +#, fuzzy +#| msgid "Some additional examples of valid ``License-Expression`` values:" +msgid "The appropriate license expressions are:" +msgstr "" +"Некоторые дополнительные примеры допустимых значений ``License-Expression``:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " @@ -8885,7 +8908,7 @@ msgstr "" "так и его вендовые зависимости, будет содержать эти метаданные, объединяя " "все выражения лицензии в одно. Такое выражение может быть следующим:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -8905,7 +8928,7 @@ msgstr "" "заявление об авторских правах Packaging и уведомление о выборе лицензии " "`__." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " @@ -8915,12 +8938,12 @@ msgstr "" "путям в дереве исходных текстов проекта (относительно корня проекта " "и :file:`pyproject.toml`):" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" "Если собрать все это вместе, то наш :file:`pyproject.toml` будет иметь вид:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" @@ -8928,20 +8951,20 @@ msgstr "" "Или же файлы лицензии можно указать явно (пути будут интерпретированы как " "glob-шаблоны):" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" "Если бы наш проект использовал :file:`setup.cfg`, мы могли бы определить это " "в :" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" "При любом из этих подходов выходные метаданные Core Metadata в дистрибутиве " "будут такими:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " @@ -8951,7 +8974,7 @@ msgstr "" "версией выпуска Setuptools, указанной в Core Metadata, файлы лицензий будут " "расположены по путям:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" @@ -8959,7 +8982,7 @@ msgstr "" "В собранном колесе, где :file:`/` является корнем архива, а ``{VERSION}`` - " "предыдущей, файлы лицензии будут храниться по адресу:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " @@ -8969,20 +8992,20 @@ msgstr "" "сайта, а ``{VERSION}`` - предыдущей версией, файлы лицензии будут " "установлены в:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "Примеры выражений" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" "Некоторые дополнительные примеры допустимых значений ``License-Expression``:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "Пользовательские сценарии" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -8996,11 +9019,11 @@ msgstr "" "консультация, и читатели должны проконсультироваться с лицензированным " "юристом в своей юрисдикции, если они не уверены в специфике своей ситуации." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "У меня есть частный пакет, который не будет распространяться" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " @@ -9011,7 +9034,7 @@ msgstr "" "включать официальную лицензию, так что вам не придется делать здесь ничего " "лишнего." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -9025,11 +9048,11 @@ msgstr "" "каталога вашего проекта, который будет автоматически включен средствами " "упаковки." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "Я просто хочу поделиться своими работами без юридических ограничений" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -9046,7 +9069,7 @@ msgstr "" "широко используется и позволяет любому делать с вашей работой все, что он " "захочет (кроме как подать на вас в суд, чего вы, вероятно, тоже не хотите)." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -9060,11 +9083,11 @@ msgstr "" "``[project]`` в ваш :file:`pyproject.toml`, если ваш инструмент упаковки " "поддерживает это, или в его конфигурационный файл/раздел. Все готово!" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "Я хочу распространять свой проект под определенной лицензией" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -9084,7 +9107,7 @@ msgstr "" "ID`` и копируемый текст лицензии на сайтах вроде `ChooseALicense " "`__ или `SPDX `__." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." @@ -9093,11 +9116,11 @@ msgstr "" "добавить файл лицензии за вас, а в будущем, возможно, будут поддерживать и " "выражение." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "Я поддерживаю существующий пакет, который уже лицензирован" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " @@ -9107,7 +9130,17 @@ msgstr "" "будет внести всего пару изменений, чтобы воспользоваться новой " "функциональностью." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 +#, fuzzy +#| msgid "" +#| "In your project config file, enter your license expression under " +#| "``license`` (``[project]`` table in :file:`pyproject.toml`), or the " +#| "equivalent for your packaging tool, and make sure to remove any legacy " +#| "``license`` table subkeys or ``License ::`` classifiers. Your existing " +#| "``license`` value may already be valid as one (e.g. ``MIT``, ``Apache-2.0 " +#| "OR BSD-2-Clause``, etc); otherwise, check the `SPDX license list " +#| "`__ for the identifier that matches the license used in your " +#| "project." msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -9115,7 +9148,7 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" "В конфигурационном файле проекта введите выражение лицензии в ``license`` " "(таблица ``[project]`` в :file:`pyproject.toml`) или эквивалентное выражение " @@ -9126,7 +9159,7 @@ msgstr "" "проверьте список лицензий `__ для идентификатора, который " "соответствует лицензии, используемой в вашем проекте." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " @@ -9136,7 +9169,7 @@ msgstr "" "``[project]`` в :file:`pyproject.toml` или в другом файле конфигурации " "вашего инструмента." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -9155,11 +9188,11 @@ msgstr "" "получения дополнительной информации обратитесь к документации вашего " "средства." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "Мой пакет включает в себя другой код под разными лицензиями" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -9172,14 +9205,23 @@ msgstr "" "построить лицензионное выражение, чтобы описать соответствующие лицензии и " "отношения между ними." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 -msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 +#, fuzzy +#| msgid "" +#| "In short, ``License-1 AND License-2`` mean that *both* licenses apply to " +#| "your project, or parts of it (for example, you included a file under " +#| "another license), and ``License-1 OR License-2`` means that *either* of " +#| "the licenses can be used, at the user's option (for example, you want to " +#| "allow users a choice of multiple licenses). You can use parenthesis " +#| "(``()``) for grouping to form expressions that cover even the most " +#| "complex situations." +msgid "" +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" "Вкратце, ``Лицензия-1 И Лицензия-2`` означает, что *обе* лицензии применимы " "к вашему проекту или его части (например, вы включили файл под другой " @@ -11683,8 +11725,13 @@ msgstr "" "Windows:" #: ../source/guides/supporting-multiple-python-versions.rst:65 +#, fuzzy +#| msgid "" +#| "`Travis CI `_ provides both a Linux and a macOS " +#| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#| "bit while the macOS is 10.9.2 at the time of writing." msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -12579,7 +12626,13 @@ msgstr "" "стандартной библиотеки в Python 3.12, хотя он по-прежнему доступен из " "setuptools." -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +#, fuzzy +#| msgid "Building binary extensions" +msgid "Build backends for extension modules" +msgstr "Создание бинарных расширений" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " @@ -12589,7 +12642,7 @@ msgstr "" "использовать систему сборки с поддержкой языка, на котором написано " "расширение, например:" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," @@ -12597,7 +12650,7 @@ msgstr "" ": ссылка:`setuptools` - изначально поддерживает C и C++ (со сторонними " "плагинами для Go и Rust)," -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," @@ -12605,7 +12658,7 @@ msgstr "" ": ссылка:`meson-python` -- C, C++, Fortran, Rust и другие языки, " "поддерживаемые Meson," -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," @@ -12613,15 +12666,15 @@ msgstr "" ": ссылка:`scikit-build-core` -- C, C++, Fortran и другие языки, " "поддерживаемые CMake," -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr ": ссылка:`maturin` - Rust, через Cargo." -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "Распределение зданий" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -12634,7 +12687,7 @@ msgstr "" "сборки, который вы : ссылка:`декларировали ` в :файл:`pyproject.toml`." -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " @@ -12644,7 +12697,7 @@ msgstr "" "bdist_wheel``. Все прямые вызовы : файл:`setup.py` " "являются :ссылка:`утратившими актуальность `." -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " @@ -12655,11 +12708,11 @@ msgstr "" "ссылка:`cibuildwheel` как часть вашей настройки CI для сборки " "распространяемых колес." -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "Загрузка на PyPI" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -12671,7 +12724,7 @@ msgstr "" "Publishing `, который позволяет безопасно загрузить " "пакет в PyPI из CI/CD рабочего процесса без ручной настройки API-токена." -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" @@ -12679,30 +12732,30 @@ msgstr "" "По состоянию на ноябрь 2024 года PyPI поддерживает следующие платформы в " "качестве доверенных поставщиков публикаций:" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "Действия на GitHub (на ``https://github.com``)" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "GitLab CI/CD (на ``https://gitlab.com``)" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "ActiveState" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "Google Cloud" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" "Другой доступный способ - загрузить пакет вручную с помощью : ссылка:`twine`." -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." @@ -12711,11 +12764,11 @@ msgstr "" "Помимо того, что он является : ссылка:`утратившим актуальность `, он еще и небезопасен." -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "Инструменты рабочего процесса" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -12734,31 +12787,31 @@ msgstr "" "для приложений. Часто они вызывают инструменты, упомянутые выше под капотом. " "В алфавитном порядке:" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr ":ссылка:`Flit`," -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr ":ссылка:`Hatch`," -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr ": документ:`nox `," -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr ":ссылка:`PDM`," -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr ":ссылка:`Pipenv`," -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr ":ссылка:`Поэзия`," -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr ": документ:`токсический <токсический:индекс>`." @@ -13290,7 +13343,7 @@ msgid "``license`` and ``license-files``" msgstr "``лицензионные файлы``" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -13431,12 +13484,19 @@ msgstr "" "избегают программ, лицензия которых не утверждена." #: ../source/guides/writing-pyproject-toml.rst:353 -msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +#, fuzzy +#| msgid "" +#| "If your project is licensed with a license that doesn't have an existing " +#| "SPDX identifier, you can create a custom one in format ``LicenseRef-" +#| "[idstring]``. The custom identifiers must follow the SPDX specification, " +#| "`clause 10.1 `_ of the version 2.2 or any later " +#| "compatible one." +msgid "" +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" "Если ваш проект лицензирован по лицензии, для которой не существует " "идентификатора SPDX, вы можете создать собственный идентификатор в формате " @@ -13444,13 +13504,13 @@ msgstr "" "соответствовать спецификации SPDX, `пункт 10.1 `_ версии 2.2 " "или любой более поздней совместимой." -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "``лицензионные файлы``" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." @@ -13458,11 +13518,11 @@ msgstr "" "Это список лицензионных файлов и файлов, содержащих другую юридическую " "информацию, которую вы хотите распространить вместе с пакетом." -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "Шаблоны glob должны соответствовать спецификации:" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." @@ -13470,7 +13530,7 @@ msgstr "" "Буквенно-цифровые символы, знаки подчеркивания (``_``), дефисы (``-``) и " "точки (``.``) будут соответствовать дословно." -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." @@ -13478,11 +13538,11 @@ msgstr "" "Специальные символы: ``*``, ``?``, ``**`` и диапазоны символов: [] " "поддерживаются." -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "Разделителями путей должны быть символы прямой косой черты (``/``)." -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." @@ -13491,15 +13551,15 @@ msgstr "" "содержащей :file:`pyproject.toml`, и поэтому не могут начинаться с символа " "слэша." -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "Индикаторы родительских каталогов (``..``) не должны использоваться." -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "Каждый glob должен соответствовать хотя бы одному файлу." -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." @@ -13508,13 +13568,13 @@ msgstr "" "последовательности символов, не предусмотренные данной спецификацией, " "являются недопустимыми." -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "``ключевые слова``" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -13522,13 +13582,13 @@ msgstr "" "Это поможет поисковой строке PyPI предлагать ваш проект при поиске по этим " "ключевым словам." -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "`` классификаторы ``" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -13536,7 +13596,7 @@ msgstr "" "Список классификаторов PyPI, которые применимы к вашему проекту. Проверьте " "`полный список возможностей `_." -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -13550,7 +13610,7 @@ msgstr "" "действительно ограничить, на каких версиях Python может быть установлен " "проект, используйте аргумент :ref:`requires-python`." -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " @@ -13560,13 +13620,13 @@ msgstr "" "классификатор ``Private :: Do Not Upload``. PyPI всегда будет отклонять " "пакеты с классификаторами, начинающимися с ``Private ::``." -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -13574,7 +13634,7 @@ msgstr "" "Список URL-адресов, связанных с вашим проектом, отображаемый на левой " "боковой панели страницы проекта PyPI." -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -13586,7 +13646,7 @@ msgstr "" "docs.pypi.org/project_metadata/#project-urls>`_ для обработки URL, " "специфичных для PyPI." -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" @@ -13596,7 +13656,7 @@ msgstr "" "кавычки, например, ``Website = «https://example.com»``, но ``«Официальный " "сайт» = «https://example.com»``." -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " @@ -13606,7 +13666,7 @@ msgstr "" "адресов своих проектов, где это уместно, поскольку потребители метаданных " "(например, индексов пакетов) могут специализировать их представление." -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " @@ -13615,7 +13675,7 @@ msgstr "" "Например, в следующих метаданных ни ``MyHomepage``, ни ``«Download Link»`` " "не являются известными метками, поэтому они будут отображены дословно:" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -13627,11 +13687,11 @@ msgstr "" "представлены с учетом этой семантики (домашняя страница проекта и его " "внешнее место загрузки, соответственно)." -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "Расширенные плагины" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " @@ -13641,17 +13701,17 @@ msgstr "" "можно привести Pytest_ и Pygments_. Чтобы создать такой плагин, нужно " "объявить его в подтаблице ``[project.entry-points]`` следующим образом:" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" "Дополнительную информацию см. в :ref:`Руководство по плагинам `." -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "Полный пример" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -13661,7 +13721,7 @@ msgstr "" "``requires-python = \"<= 3.10\"``. ``Эта запись в блоге `` содержит некоторую информацию о возможных проблемах." -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -17696,12 +17756,19 @@ msgid "WHEEL is the wheel metadata specific to a build of the package." msgstr "WHEEL - это метаданные колеса, специфичные для сборки пакета." #: ../source/specifications/binary-distribution-format.rst:239 +#, fuzzy +#| msgid "" +#| "RECORD is a list of (almost) all the files in the wheel and their secure " +#| "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " +#| "hash of itself, must include its hash. The hash algorithm must be sha256 " +#| "or better; specifically, md5 and sha1 are not permitted, as signed wheel " +#| "files rely on the strong hashes in RECORD to validate the integrity of " +#| "the archive." msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" "RECORD - это список (почти) всех файлов в колесе и их защищенных хэшей. В " "отличие от PEP 376, каждый файл, кроме RECORD, который не может содержать " @@ -17710,98 +17777,97 @@ msgstr "" "подписанные файлы колеса полагаются на надежные хэши в RECORD для " "подтверждения целостности архива." -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "В архив не включены файлы PEP 376 \"INSTALLER\" и \"REQUESTED\"." -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" -"RECORD.jws используется для цифровых подписей. Он не упоминается в RECORD." - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -"RECORD.p7s разрешен в качестве любезности для тех, кто предпочитает " -"использовать подписи S/MIME для защиты своих колесных файлов. Она не " -"упоминается в RECORD." -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 +#, fuzzy +#| msgid "" +#| "During extraction, wheel installers verify all the hashes in RECORD " +#| "against the file contents. Apart from RECORD and its signatures, " +#| "installation will fail if any file in the archive is not both mentioned " +#| "and correctly hashed in RECORD." msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" "Во время извлечения программа установки колес сверяет все хэши в RECORD с " "содержимым файлов. Помимо RECORD и его сигнатур, установка завершится " "неудачей, если какой-либо файл в архиве не упомянут и не захеширован " "правильно в RECORD." -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 #, fuzzy #| msgid "Project name" msgid "Subdirectory name" msgstr "Название проекта" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 #, fuzzy #| msgid "``license``" msgid "``licenses``" msgstr "``лицензия``" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 #, fuzzy #| msgid "``license-files``" msgid "``license_files``" msgstr "``лицензионные файлы``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 #, fuzzy #| msgid "``LIB``" msgid "``LICENSES``" msgstr "``LIB``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "Каталог :file:`.dist-info/licenses/`" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -17815,24 +17881,24 @@ msgstr "" "в полях ``License-File`` в файле :file:`METADATA`` по их соответствующим " "путям относительно каталога :file:`licenses/`." -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 #, fuzzy #| msgid "The :file:`.dist-info/licenses/` directory" msgid "The :file:`.dist-info/sboms/` directory" msgstr "Каталог :file:`.dist-info/licenses/`" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "Директория .data" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " @@ -17842,7 +17908,7 @@ msgstr "" "помещаются в каталог .data, названный так же, как и каталог .dist-info, но с " "расширением .data/::" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " @@ -17852,112 +17918,17 @@ msgstr "" "и прочим из дистрибутива. Во время установки содержимое этих подкаталогов " "переносится на путь назначения." -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "Подписанные файлы колес" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" -"Файлы колес включают расширенную запись RECORD, которая позволяет " -"использовать цифровые подписи. В PEP 376 RECORD изменен, чтобы включать " -"безопасный хэш ``digestname=urlsafe_b64encode_nopad(digest)`` (кодировка " -"urlsafe base64 без задних символов =) в качестве второго столбца вместо " -"md5sum. Хешируются все возможные записи, включая любые сгенерированные " -"файлы, такие как файлы .pyc, но не RECORD, который не может содержать свой " -"собственный хеш. Например::" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" -"Файл(ы) подписи RECORD.jws и RECORD.p7s вообще не упоминаются в RECORD, " -"поскольку они могут быть добавлены только после создания RECORD. Все " -"остальные файлы в архиве должны иметь правильный хэш в RECORD, иначе " -"установка завершится неудачей." - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" -"Если используются веб-подписи JSON, одна или несколько подписей JSON Web " -"Signature JSON Serialization (JWS-JS) хранятся в файле RECORD.jws, " -"примыкающем к RECORD. JWS используется для подписи RECORD путем включения " -"SHA-256 хэша RECORD в качестве полезной нагрузки JSON подписи:" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "(Хеш-значение имеет тот же формат, что и в RECORD)" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" -"Если используется файл RECORD.p7s, он должен содержать отделенную подпись " -"RECORD в формате S/MIME." - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" -"Программа установки колеса не обязана понимать цифровые подписи, но ДОЛЖНА " -"проверять хэши в RECORD по содержимому извлеченного файла. Когда программа " -"установки сверяет хэши файлов с RECORD, отдельному средству проверки подписи " -"достаточно убедиться, что RECORD соответствует подписи." - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "Смотрите" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "https://datatracker.ietf.org/doc/html/rfc7515" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "https://datatracker.ietf.org/doc/html/rfc7517" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "ЧаВо" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" "Wheel определяет каталог .data. Должен ли я поместить туда все свои данные?" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -17973,62 +17944,11 @@ msgstr "" "если *эти* файлы обычно не будут распространяться в директории *wheel'а* " "``.data``." -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "Почему колесо включает в себя прикрепленные подписи?" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" -"Прикрепленные подписи более удобны, чем отсоединенные, поскольку они " -"путешествуют вместе с архивом. Поскольку подписываются только отдельные " -"файлы, архив можно перекомпрессировать, не аннулируя подпись, или проверить " -"отдельные файлы без необходимости загружать весь архив." - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "Почему колесо разрешает подписи JWS?" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" -"Спецификации JOSE, частью которых является JWS, разработаны для простоты " -"реализации, что также является одной из основных целей дизайна Wheel. JWS " -"представляет собой полезную и лаконичную реализацию на чистом Python." - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "Почему wheel также позволяет использовать подписи S/MIME?" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" -"Подписи S/MIME разрешены для пользователей, которым необходимо или хочется " -"использовать существующую инфраструктуру открытых ключей с помощью колеса." - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" -"Подписанные пакеты являются лишь базовым элементом системы безопасного " -"обновления пакетов. Wheel предоставляет только строительный блок." - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "Как обстоят дела с \"purelib\" и \"platlib\"?" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -18040,7 +17960,7 @@ msgstr "" "usr/lib/pythonX.Y/site-packages', а платформозависимые пакеты - в '/usr/" "lib64/pythonX.Y/site-packages'." -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -18052,7 +17972,7 @@ msgstr "" "теми же файлами в корне, и законно иметь файлы как в категории \"purelib\", " "так и в категории \"platlib\"." -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " @@ -18063,11 +17983,11 @@ msgstr "" "должны находиться в корне с соответствующей настройкой для \"Root-is-" "purelib\"." -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "Можно ли импортировать код Python непосредственно из файла wheel?" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -18081,7 +18001,7 @@ msgstr "" "Однако, хотя такое поведение является естественным следствием дизайна " "формата, полагаться на него, как правило, не рекомендуется." -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -18100,7 +18020,7 @@ msgstr "" "безопасности, или полная интеграция со стандартным механизмом сборки для C-" "расширений путем публикации заголовочных файлов в соответствующем месте)." -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -18133,7 +18053,7 @@ msgstr "" "взаимодействие с внешними компонентами все равно может потребовать наличия " "реального файла на диске." -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -18147,7 +18067,7 @@ msgstr "" "имейте в виду, что многие проекты потребуют воспроизвести сбой с полностью " "установленным пакетом, прежде чем принять его за настоящую ошибку." -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -18161,18 +18081,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "История" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "Февраль 2013 г: Эта спецификация была одобрена через :pep:`427`." -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." @@ -18181,7 +18101,7 @@ msgstr "" "пересмотрены, чтобы привести их в соответствие с тем, что на самом деле " "делают популярные инструменты." -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -18193,7 +18113,7 @@ msgstr "" "симлинками или подкаталогами в этой папке формально не определено, и поэтому " "может отличаться для разных инструментов)." -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " @@ -18202,7 +18122,7 @@ msgstr "" "Декабрь 2024 года: Каталог :file:`.dist-info/licenses/` был указан " "через :pep:`639`." -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." @@ -18210,11 +18130,15 @@ msgstr "" "Январь 2025 года: Уточнено, что имя и версия должны быть нормализованы для " "директорий ``.dist-info`` и ``.data``." -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "Приложение" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "Пример реализации urlsafe-base64-nopad::" @@ -19048,12 +18972,20 @@ msgstr "" "«2.2», «2.3» и «2.4»." #: ../source/specifications/core-metadata.rst:55 -msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +#, fuzzy +#| msgid "" +#| "Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " +#| "greater than the highest version they support, and MUST fail if " +#| "``metadata_version`` has a greater major version than the highest version " +#| "they support (as described in the :ref:`Version specifier specification " +#| "`, the major version is the value before the first " +#| "dot)." +msgid "" +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" "Автоматизированные инструменты, потребляющие метаданные, ДОЛЖНЫ " "предупреждать, если ``metadata_version`` больше, чем самая высокая " @@ -21499,7 +21431,13 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" @@ -21507,11 +21445,11 @@ msgstr "" "pip, рекомендуемая программа установки пакетов Python (http://" "pip.readthedocs.org/en/stable/)" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "Библиотека PEG Петрушка. (https://pypi.python.org/pypi/parsley/)" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -24348,7 +24286,7 @@ msgid "" msgstr "Ниже приведен пример чтения потока произвольных блоков метаданных." #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "Рекомендации" @@ -29589,7 +29527,7 @@ msgstr "" "отображать эту строку для конечных пользователей." #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -29635,7 +29573,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -29956,7 +29894,7 @@ msgstr "" "проекта." #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." @@ -29965,7 +29903,7 @@ msgstr "" "сериализация_>`__." #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "В качестве примера:" @@ -30014,8 +29952,11 @@ msgstr "" "будет иметь URL типа ``/глупый_ход/``." #: ../source/specifications/simple-repository-api.rst:480 +#, fuzzy +#| msgid "" +#| "This URL must respond with a JSON encoded dictionary that has four keys:" msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" "В ответ на этот URL должен прийти словарь в кодировке JSON, состоящий из " "четырех ключей:" @@ -30025,43 +29966,45 @@ msgid "``name``: The normalized name of the project." msgstr "``название``: Нормализованное имя проекта." #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -"``файлы``: Список словарей, каждый из которых представляет отдельный файл." -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 +#: ../source/specifications/simple-repository-api.rst:494 #, fuzzy #| msgid "The ``versions`` key was added with API version 1.1." -msgid "The ``project-status`` key was added with API version 1.4." +msgid "The ``status`` key was added with API version 1.4." msgstr "Ключ ``версии`` был добавлен в API версии 1.1." -#: ../source/specifications/simple-repository-api.rst:500 +#: ../source/specifications/simple-repository-api.rst:496 msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" +#: ../source/specifications/simple-repository-api.rst:501 +#, fuzzy +#| msgid "The ``versions`` key was added with API version 1.1." +msgid "The ``reason`` key was added with API version 1.4." +msgstr "Ключ ``версии`` был добавлен в API версии 1.1." + #: ../source/specifications/simple-repository-api.rst:505 #, fuzzy #| msgid "The ``versions`` key was added with API version 1.1." -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "Ключ ``версии`` был добавлен в API версии 1.1." #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" +"``файлы``: Список словарей, каждый из которых представляет отдельный файл." + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " @@ -30072,7 +30015,7 @@ msgstr "" "множеством, и поэтому не может содержать дубликатов, а порядок версий не " "имеет значения." -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -30084,7 +30027,7 @@ msgstr "" "ассоциированных файлов (для представления версий без загруженных файлов, " "если сервер имеет такую концепцию)." -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -30099,23 +30042,23 @@ msgstr "" "упорядочены с использованием правил VSS. Тем не менее, серверы **ДОЛЖНЫ** " "использовать нормализованные версии VSS, где это возможно." -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "Ключ ``версии`` был добавлен в API версии 1.1." -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "Каждый отдельный словарь файлов имеет следующие ключи:" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "``имя файла``: Имя представляемого файла." -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "``url``: URL, с которого может быть получен файл." -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -30129,7 +30072,7 @@ msgstr "" "вообще ничего). Имена хэшей **ОБЯЗАТЕЛЬНО** всегда должны быть приведены к " "нижнему регистру." -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " @@ -30139,7 +30082,7 @@ msgstr "" "однако **НАСТОЯТЕЛЬНО** рекомендуется всегда включать хотя бы один " "безопасный, гарантированно доступный хэш." -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -30156,7 +30099,7 @@ msgstr "" "быть включен. На момент создания данной спецификации рекомендуется " "использовать ``sha256``." -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -30168,7 +30111,7 @@ msgstr "" "инструменты установки **ДОЛЖНЫ** игнорировать загрузку при установке на " "версию Python, которая не удовлетворяет этому требованию." -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " @@ -30178,7 +30121,7 @@ msgstr "" "HTML API ``, ключ ``запросы-python`` не требует " "никакого специального экранирования, кроме того, что JSON делает естественно." -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -30195,7 +30138,7 @@ msgstr "" "либо словарем, отображающим имена хэшей на шестнадцатеричный дайджест хэша " "метаданных." -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " @@ -30204,7 +30147,7 @@ msgstr "" "Если это словарь хэшей, а не булевых значений, то все те же требования и " "рекомендации, что и для ключа ``хэши``, справедливы и для этого ключа." -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " @@ -30214,7 +30157,7 @@ msgstr "" "не существовать. Если значение ключа истинно, то файл метаданных " "присутствует, а если ложно, то нет." -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." @@ -30222,7 +30165,7 @@ msgstr "" "Рекомендуется, чтобы серверы по возможности предоставляли хэши файлов " "метаданных." -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." @@ -30230,7 +30173,7 @@ msgstr "" "``dist-info-metadata``: **опциональный**, устаревший псевдоним для ``core-" "metadata``." -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." @@ -30238,7 +30181,7 @@ msgstr "" "Индексные клиенты **МОГУТ** использовать этот ключ, если он присутствует, в " "качестве традиционного запасного варианта для ``ядра-метаданных``." -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." @@ -30246,7 +30189,7 @@ msgstr "" "``dist-info-metadata`` был стандартизирован в :pep:`658` и переименован в " "``core-metadata`` в :pep:`714`." -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -30261,7 +30204,7 @@ msgstr "" "Если этот ключ не существует, то подпись может существовать, а может и не " "существовать." -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 #, fuzzy #| msgid "" #| "``yanked``: An **optional** key which may be either a boolean to indicate " @@ -30287,7 +30230,7 @@ msgstr "" "``url``, был \"Yanked\" согласно : ссылка:спецификации API yank <простой " "репозиторий-апи-yank>`." -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." @@ -30295,11 +30238,11 @@ msgstr "" "``размер``: **обязательный** ключ. Он **ДОЛЖЕН** содержать целое число, " "которое представляет собой размер файла в байтах." -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "Ключ ``размер`` был добавлен в API версии 1.1." -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -30311,7 +30254,7 @@ msgstr "" "``yyyy-mm-ddThh:mm:ss.ffffffZ``, которая представляет время, когда файл был " "загружен в индекс." -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -30325,11 +30268,11 @@ msgstr "" "точности. Если сервер не записывает информацию о времени загрузки файла, он " "**МОЖЕТ** опустить ключ ``upload-time``." -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "Ключ ``время загрузки`` был добавлен в API версии 1.1." -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -30342,11 +30285,11 @@ msgstr "" "правилам, что и ``data-provenance`` в спецификации HTML API ` в :ref:`base HTML API`." -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "Поле ``provenance`` было добавлено в API версии 1.3." -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -30434,11 +30377,11 @@ msgstr "" "далее определяет ``текст/html`` как псевдоним для типа содержимого " "``приложение/vnd.pypi. простой.v1+html``." -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "Выбор версии + формата" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -30452,7 +30395,7 @@ msgstr "" "новая основная версия API могла быть добавлена без нарушения работы " "существующих клиентов, ожидающих предыдущую версию API." -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" @@ -30470,7 +30413,7 @@ msgstr "" "Хотя эта спецификация не может полностью описать всю процедуру согласования " "содержимого на сервере, ее суть примерно такова:" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." @@ -30478,7 +30421,7 @@ msgstr "" "Клиент отправляет HTTP-запрос, содержащий заголовок ``Принять``, в котором " "перечислены все типы содержимого версии+формата, которые он способен понять." -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " @@ -30488,7 +30431,7 @@ msgstr "" "содержимого, затем возвращает ответ, используя этот тип содержимого " "(рассматривая отсутствие заголовка ``принять`` как ``принять: */*``)." -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " @@ -30497,7 +30440,7 @@ msgstr "" "Если сервер не поддерживает ни один из типов содержимого в заголовке " "``принять``, он может выбрать один из 3 вариантов ответа:" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." @@ -30505,7 +30448,7 @@ msgstr "" "Выберите тип содержимого по умолчанию, отличный от того, что запросил " "клиент, и верните ответ с этим типом." -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " @@ -30515,7 +30458,7 @@ msgstr "" "запрошенных типов содержимого не был доступен, и сервер не смог или не " "захотел выбрать тип содержимого по умолчанию для ответа." -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." @@ -30523,7 +30466,7 @@ msgstr "" "Возвращает ответ HTTP ``300 Множество вариантов``, содержащий список всех " "возможных ответов, которые могли быть выбраны." -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." @@ -30531,7 +30474,7 @@ msgstr "" "Клиент интерпретирует ответ, обрабатывая различные типы ответов, которые мог " "дать сервер." -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -30543,7 +30486,7 @@ msgstr "" "**ДОЛЖНЫ** быть готовы обрабатывать все возможные ответы тем способом, " "который наиболее удобен для них." -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -30561,7 +30504,7 @@ msgstr "" "случае, так что в лучшем случае этот ответ будет рассматриваться так же, как " "и ошибка ``406 не принято``." -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -30575,7 +30518,7 @@ msgstr "" "vnd.pypi.simple.latest+json``, который возвращает ответ ``v1.x'', должен " "иметь ``Content-Type`` из ``application/vnd.pypi.simple.v1+json``)." -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " @@ -30585,19 +30528,19 @@ msgstr "" "содержимого, которые клиент понимает и может обрабатывать. Он поддерживает " "три различных формата для каждого запрашиваемого типа содержимого:" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "``$тип/$подтип``" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "``$тип/*``" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "``*/*``" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " @@ -30607,7 +30550,7 @@ msgstr "" "$подтип``, поскольку это единственный способ действительно указать нужную " "версию и формат." -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -30623,7 +30566,7 @@ msgstr "" "синтаксис ``принять`` в заголовке ``значение качества `_." -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -30639,7 +30582,7 @@ msgstr "" "более низким качеством, и любая запись без присутствующего качества будет по " "умолчанию иметь качество ``1``." -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -30650,7 +30593,7 @@ msgstr "" "запрошенных ими типов содержимого, независимо от их приоритета, и даже может " "вернуть тип содержимого, который они **не* запрашивали." -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -30669,11 +30612,11 @@ msgstr "" "_internal/index/collector.py#L123-L150>`_, так что риск реальных поломок " "невелик." -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "Пример работы клиента может выглядеть следующим образом:" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " @@ -30683,11 +30626,11 @@ msgstr "" "удалит типы контента, которые ему не нужны, из заголовка ``принять``, и " "превратит их получение в ошибку." -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "Альтернативные механизмы переговоров" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -30702,11 +30645,11 @@ msgstr "" "предусмотрены альтернативные механизмы согласования, которые могут " "*факультативно* использоваться вместо него." -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "Параметр URL" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " @@ -30715,7 +30658,7 @@ msgstr "" "Серверы, реализующие Simple API, могут поддерживать параметр URL с именем " "``формат``, чтобы позволить клиентам запрашивать определенную версию URL." -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " @@ -30725,7 +30668,7 @@ msgstr "" "содержимого. Передача нескольких типов содержимого, подстановочных карт, " "качественных значений и т. д. **не поддерживается." -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -30738,7 +30681,7 @@ msgstr "" "документации или примечаниях можно было ссылаться на конкретную " "версию+формат." -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." @@ -30746,7 +30689,7 @@ msgstr "" "Серверы, не поддерживающие этот параметр, могут возвращать ошибку при его " "наличии или просто игнорировать его присутствие." -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -30763,11 +30706,11 @@ msgstr "" "Недоступен``, ``303 Несколько вариантов`` или выбор типа по умолчанию для " "возврата)." -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "Конфигурация конечной точки" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " @@ -30778,7 +30721,7 @@ msgstr "" "серверам выбирать, какой из доступных типов содержимого является их типом по " "умолчанию." -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -30790,7 +30733,7 @@ msgstr "" "свой клиент для выбора нужной им версии, то такая конфигурация " "поддерживается." -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -30807,7 +30750,7 @@ msgstr "" "``Принять``, сервер может проигнорировать его и вернуть тип содержимого, " "соответствующий данной конечной точке." -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -30819,7 +30762,7 @@ msgstr "" "репозитория, и при запросе к этому серверу выдавать заголовок ``Принять``, " "который *только* включает правильный тип содержимого." -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -30831,7 +30774,7 @@ msgstr "" "реализации этой спецификации, но он **не** представляет собой никаких " "требований по соответствию этим решениям." -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -30845,11 +30788,11 @@ msgstr "" "использование API обеспечивало защитные ограждения, которые пытаются " "подтолкнуть клиента к наилучшему выбору." -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "Рекомендуется использовать серверы:" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " @@ -30860,7 +30803,7 @@ msgstr "" "крайней мере, пока они получают нетривиальный трафик, использующий ответы " "HTML." -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -30871,7 +30814,7 @@ msgstr "" "с которыми сервер умеет работать, сервер не должен возвращать ответ ``300 " "Множественный выбор``, а вместо этого возвращает ответ ``406 Неприемлемо``." -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." @@ -30880,7 +30823,7 @@ msgstr "" "предпочесть возвращать ответ ``200 OK`` в ожидаемом типе содержимого для " "данной конечной точки." -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -30895,11 +30838,11 @@ msgstr "" "использовать тип содержимого ``текст/html`` только в качестве последнего " "средства." -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "Рекомендуется, чтобы клиенты:" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." @@ -30907,7 +30850,7 @@ msgstr "" "Поддерживать все 3 типа контента, описанные в данной спецификации, используя " "согласование контента с сервером, до тех пор, пока это возможно." -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." @@ -30915,7 +30858,7 @@ msgstr "" "При составлении заголовка ``Принять`` включите в него все типы содержимого, " "которые вы поддерживаете." -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -30929,7 +30872,7 @@ msgstr "" "стандартной библиотеки и беспокоитесь о том, что некоторые типы HTML-ответов " "могут быть не в состоянии разобрать в некоторых крайних случаях)." -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " @@ -30940,7 +30883,7 @@ msgstr "" "html``, если только это не единственный тип содержимого, который вы " "запрашиваете." -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." @@ -30948,7 +30891,7 @@ msgstr "" "Явно выбирайте версии, которые они ищут, вместо того чтобы использовать " "``последнюю`` мета-версию во время обычной работы." -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." @@ -30956,19 +30899,19 @@ msgstr "" "Проверьте ``Контент-Тип`` в ответе и убедитесь, что он соответствует тому, " "что вы ожидали." -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "Сентябрь 2015 года: начальная форма формата HTML, в :pep:`503`" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "Июль 2016 г: Метаданные Требуется-Python, в обновлении :pep:`503`" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "Май 2019: поддержка \"янки\", в :pep:`592`" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" @@ -30976,14 +30919,14 @@ msgstr "" "Июль 2020 года: Соглашение о версиях API и метаданные, а также объявление " "формата HTML как API v1, в :pep:`629`" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" "Май 2021: предоставление метаданных пакета независимо от пакета, в :pep:`658`" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" @@ -30991,7 +30934,7 @@ msgstr "" "Май 2022: начальная форма формата JSON, с механизмом выбора между ними для " "клиентов, и объявление обоих форматов как API v1, в :pep:`691`" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" @@ -30999,7 +30942,7 @@ msgstr "" "Октябрь 2022: версии проектов, размер файлов и время загрузки в формате " "JSON, в :pep:`700`" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" @@ -31007,14 +30950,14 @@ msgstr "" "Июнь 2023: переименование поля, предоставляющего метаданные пакета " "независимо от пакета, в :pep:`714`" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" "Ноябрь 2024: метаданные о проверке в форматах HTML и JSON, в :pep:`740`" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 #, fuzzy #| msgid "" #| "November 2024: provenance metadata in the HTML and JSON formats, " @@ -31024,7 +30967,7 @@ msgid "" msgstr "" "Ноябрь 2024: метаданные о проверке в форматах HTML и JSON, в :pep:`740`" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -33216,18 +33159,26 @@ msgid "Arbitrary equality" msgstr "Произвольное равенство" #: ../source/specifications/version-specifiers.rst:1017 +#, fuzzy +#| msgid "" +#| "Arbitrary equality comparisons are simple string equality operations " +#| "which do not take into account any of the semantic information such as " +#| "zero padding or local versions. This operator also does not support " +#| "prefix matching as the ``==`` operator does." msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" "Произвольные сравнения равенства - это простые операции равенства строк, " "которые не учитывают никакой семантической информации, такой как нулевая " "подстановка или локальные версии. Этот оператор также не поддерживает " "сопоставление префиксов, как это делает оператор ``==``." -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -33241,14 +33192,14 @@ msgstr "" "человеку, использующему инструмент, реализующий эту спецификацию, установить " "устаревшую версию, которая иначе несовместима с этой спецификацией." -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" "Примером может служить ``===foobar``, который будет соответствовать версии " "``foobar``." -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " @@ -33258,7 +33209,7 @@ msgstr "" "непропатченной версии проекта, например, ``===1.0``, которая не будет " "соответствовать версии ``1.0+downstream1``." -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." @@ -33266,11 +33217,11 @@ msgstr "" "Использовать этот оператор крайне не рекомендуется, и оснастка ДОЛЖНА " "содержать предупреждение о его использовании." -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "Работа с предварительными выпусками" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -33283,17 +33234,17 @@ msgstr "" "версия, удовлетворяющая спецификатору версии, является предварительной " "версией." -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "По умолчанию инструменты разрешения зависимостей ДОЛЖНЫ:" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" "принимать уже установленные предварительные версии для всех спецификаторов " "версии" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" @@ -33302,11 +33253,11 @@ msgstr "" "версий, если не существует финального или пост-выпуска, удовлетворяющего " "спецификатору версии" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "исключить из рассмотрения все прочие предварительные продажи" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." @@ -33314,7 +33265,7 @@ msgstr "" "Средства разрешения зависимостей МОГУТ выдавать предупреждение, если для " "удовлетворения спецификатора версии требуется предварительный выпуск." -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" @@ -33322,11 +33273,11 @@ msgstr "" "Средства разрешения зависимостей ДОЛЖНЫ также позволять пользователям " "запрашивать следующие альтернативные варианты поведения:" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "прием предварительных версий для всех спецификаторов версий" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " @@ -33337,7 +33288,7 @@ msgstr "" "локально, или если предварительная версия является единственным способом " "удовлетворить определенный спецификатор)" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." @@ -33345,7 +33296,7 @@ msgstr "" "Средства разрешения зависимостей MAY также позволяют управлять вышеуказанным " "поведением на основе каждого дистрибутива." -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." @@ -33354,24 +33305,24 @@ msgstr "" "спецификаторах версий - они всегда включаются, если только не исключены " "явным образом." -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" "``~=3.1``: версия 3.1 или более поздняя, но не версия 4.0 или более поздняя." -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" "``~=3.1.2``: версия 3.1.2 или более поздняя, но не версия 3.2.0 или более " "поздняя." -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" "``~=3.1a1``: версия 3.1a1 или более поздняя, но не версия 4.0 или более " "поздняя." -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." @@ -33379,7 +33330,7 @@ msgstr "" "``== 3.1``: конкретно версия 3.1 (или 3.1.0), исключает все пре-релизы, пост-" "релизы, релизы разработки и любые поддерживающие релизы 3.1.x." -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." @@ -33387,7 +33338,7 @@ msgstr "" "``== 3.1.*``: любая версия, начинающаяся с 3.1. Эквивалентно положению о " "совместимом выпуске ``~=3.1.0``." -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." @@ -33395,11 +33346,11 @@ msgstr "" "``~=3.1.0, != 3.1.3``: версия 3.1.0 или более поздняя, но не версия 3.1.3 и " "не версия 3.2.0 или более поздняя." -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "Прямые ссылки" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " @@ -33409,7 +33360,7 @@ msgstr "" "прямой ссылки в качестве альтернативы обычному спецификатору версии. Прямая " "ссылка состоит из спецификатора ``@`` и явного URL." -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -33421,7 +33372,7 @@ msgstr "" "как минимум выдавать предупреждения, а могут и полностью отклонять их, если " "прямые ссылки используются неуместно." -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " @@ -33431,7 +33382,7 @@ msgstr "" "в загружаемых дистрибутивах. Прямые ссылки предназначены для интеграторов " "программного обеспечения, а не для издателей." -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " @@ -33441,16 +33392,16 @@ msgstr "" "прямой URL-ссылки могут быть sdist или бинарный архив wheel. Точные URL-" "адреса и поддерживаемые цели зависят от инструмента." -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "Например, на локальный исходный архив можно ссылаться напрямую::" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" "В качестве альтернативы можно сослаться на предварительно собранный архив::" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -33471,7 +33422,7 @@ msgstr "" "Если такая прямая ссылка также использует небезопасный транспорт, " "автоматизированные инструменты НЕ ДОЛЖНЫ полагаться на URL." -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -33485,7 +33436,7 @@ msgstr "" "в этот список входят ``md5``, ``sha1``, ``sha224``, ``sha256``, ``sha384`` и " "``sha512``." -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " @@ -33495,7 +33446,7 @@ msgstr "" "указано путем включения записи ``=`` в " "качестве части фрагмента URL." -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -33510,7 +33461,7 @@ msgstr "" "МОГУТ не выдавать предупреждения об отсутствии хэшей для систем контроля " "версий, которые не предоставляют идентификаторы фиксации на основе хэшей." -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -33522,7 +33473,7 @@ msgstr "" "добавлена в конец URL с помощью нотации ``@`` или " "``@#``." -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -33539,15 +33490,15 @@ msgstr "" "хэш, чтобы затруднить подделку (создать вредоносное репо с определённым " "тегом легко, а создать репо с определённым *хэшем* - менее)." -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "Примеры удаленных URL::" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "URL-адреса файлов" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -33560,7 +33511,7 @@ msgstr "" "определяет путь к файлу в файловой системе, к которому необходимо получить " "доступ." -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -33573,7 +33524,7 @@ msgstr "" "в \\*nix схема ``file://`` может использоваться только для доступа к путям " "на локальной машине." -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -33593,11 +33544,11 @@ msgstr "" "в Windows можно найти в `MSDN `_." -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "Краткое описание отличий от pkg_resources.parse_version" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " @@ -33608,7 +33559,7 @@ msgstr "" "был принят, setuptools 6.0 и более поздние версии приняли описанное здесь " "поведение." -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " @@ -33618,7 +33569,7 @@ msgstr "" "сортировались как большие, чем та же версия без локальной версии, в то время " "как ``pkg_resources.parse_version`` считает это маркером предрелизности." -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " @@ -33628,7 +33579,7 @@ msgstr "" "собой правильную версию, в то время как ``pkg_resources.parse_version`` " "пытается получить некоторое значение из *любой* произвольной строки." -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " @@ -33639,11 +33590,11 @@ msgstr "" "допускает только одно использование каждого типа, и они должны существовать " "в определенном порядке." -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "Приложение: Разбор строк версий с помощью регулярных выражений" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -33657,7 +33608,7 @@ msgstr "" "использовать для проверки того, имеет ли версия уже такую форму, и, если " "нет, извлечь различные компоненты для последующей нормализации." -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" @@ -33665,7 +33616,7 @@ msgstr "" "Чтобы проверить, соответствует ли идентификатор версии каноническому " "формату, можно воспользоваться следующей функцией:" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_):" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "Август 2014 г: Эта спецификация была одобрена через :pep:`440`." -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "Виртуальные среды Python" @@ -35542,10 +35497,22 @@ msgstr "" "pypi.org/classifiers/." #: ../source/tutorials/packaging-projects.rst:222 +#, fuzzy +#| msgid "" +#| "This is a valid :term:`SPDX license expression ` " +#| "consisting of one or more :term:`license identifiers `. The full license list is available at the `SPDX license " +#| "list page `_. The supported list version is 3.17 or any " +#| "later compatible one." msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" +"Это действительное выражение лицензии :term:`SPDX `, " +"состоящее из одного или нескольких :term:`license identifiers `. Полный список лицензий доступен на странице `списка лицензий " +"SPDX `_. Поддерживаемая версия списка - 3.17 или любая " +"более поздняя совместимая." #: ../source/tutorials/packaging-projects.rst:224 #, fuzzy @@ -35597,12 +35564,21 @@ msgid "Creating a LICENSE" msgstr "Создание файла :file:`LICENSE`" #: ../source/tutorials/packaging-projects.rst:253 -msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +#, fuzzy +#| msgid "" +#| "It's important for every package uploaded to the Python Package Index to " +#| "include a license. This tells users who install your package the terms " +#| "under which they can use your package. For help picking a license, see " +#| "https://choosealicense.com/. Once you have chosen a license, " +#| "open :file:`LICENSE` and enter the license text. For example, if you had " +#| "chosen the MIT license:" +msgid "" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" "Важно, чтобы каждый пакет, загруженный в Python Package Index, содержал " "лицензию. Это указывает пользователям, устанавливающим ваш пакет, на каких " @@ -35952,6 +35928,159 @@ msgstr "" "Если вы только начинаете с Python упаковки, рекомендуется придерживаться " "*регулярных пакетов* и ``__init__.py`` (даже если файл пуст)." +#, fuzzy +#~| msgid "The ``versions`` key was added with API version 1.1." +#~ msgid "The ``project-status-reason`` key was added with API version 1.4." +#~ msgstr "Ключ ``версии`` был добавлен в API версии 1.1." + +#~ msgid "" +#~ "RECORD.jws is used for digital signatures. It is not mentioned in RECORD." +#~ msgstr "" +#~ "RECORD.jws используется для цифровых подписей. Он не упоминается в " +#~ "RECORD." + +#~ msgid "" +#~ "RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/" +#~ "MIME signatures to secure their wheel files. It is not mentioned in " +#~ "RECORD." +#~ msgstr "" +#~ "RECORD.p7s разрешен в качестве любезности для тех, кто предпочитает " +#~ "использовать подписи S/MIME для защиты своих колесных файлов. Она не " +#~ "упоминается в RECORD." + +#~ msgid "Signed wheel files" +#~ msgstr "Подписанные файлы колес" + +#~ msgid "" +#~ "Wheel files include an extended RECORD that enables digital signatures. " +#~ "PEP 376's RECORD is altered to include a secure hash " +#~ "``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding " +#~ "with no trailing = characters) as the second column instead of an " +#~ "md5sum. All possible entries are hashed, including any generated files " +#~ "such as .pyc files, but not RECORD which cannot contain its own hash. For " +#~ "example::" +#~ msgstr "" +#~ "Файлы колес включают расширенную запись RECORD, которая позволяет " +#~ "использовать цифровые подписи. В PEP 376 RECORD изменен, чтобы включать " +#~ "безопасный хэш ``digestname=urlsafe_b64encode_nopad(digest)`` (кодировка " +#~ "urlsafe base64 без задних символов =) в качестве второго столбца вместо " +#~ "md5sum. Хешируются все возможные записи, включая любые сгенерированные " +#~ "файлы, такие как файлы .pyc, но не RECORD, который не может содержать " +#~ "свой собственный хеш. Например::" + +#~ msgid "" +#~ "The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in " +#~ "RECORD at all since they can only be added after RECORD is generated. " +#~ "Every other file in the archive must have a correct hash in RECORD or the " +#~ "installation will fail." +#~ msgstr "" +#~ "Файл(ы) подписи RECORD.jws и RECORD.p7s вообще не упоминаются в RECORD, " +#~ "поскольку они могут быть добавлены только после создания RECORD. Все " +#~ "остальные файлы в архиве должны иметь правильный хэш в RECORD, иначе " +#~ "установка завершится неудачей." + +#~ msgid "" +#~ "If JSON web signatures are used, one or more JSON Web Signature JSON " +#~ "Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent " +#~ "to RECORD. JWS is used to sign RECORD by including the SHA-256 hash of " +#~ "RECORD as the signature's JSON payload:" +#~ msgstr "" +#~ "Если используются веб-подписи JSON, одна или несколько подписей JSON Web " +#~ "Signature JSON Serialization (JWS-JS) хранятся в файле RECORD.jws, " +#~ "примыкающем к RECORD. JWS используется для подписи RECORD путем " +#~ "включения SHA-256 хэша RECORD в качестве полезной нагрузки JSON подписи:" + +#~ msgid "(The hash value is the same format used in RECORD.)" +#~ msgstr "(Хеш-значение имеет тот же формат, что и в RECORD)" + +#~ msgid "" +#~ "If RECORD.p7s is used, it must contain a detached S/MIME format signature " +#~ "of RECORD." +#~ msgstr "" +#~ "Если используется файл RECORD.p7s, он должен содержать отделенную подпись " +#~ "RECORD в формате S/MIME." + +#~ msgid "" +#~ "A wheel installer is not required to understand digital signatures but " +#~ "MUST verify the hashes in RECORD against the extracted file contents. " +#~ "When the installer checks file hashes against RECORD, a separate " +#~ "signature checker only needs to establish that RECORD matches the " +#~ "signature." +#~ msgstr "" +#~ "Программа установки колеса не обязана понимать цифровые подписи, но " +#~ "ДОЛЖНА проверять хэши в RECORD по содержимому извлеченного файла. Когда " +#~ "программа установки сверяет хэши файлов с RECORD, отдельному средству " +#~ "проверки подписи достаточно убедиться, что RECORD соответствует подписи." + +#~ msgid "See" +#~ msgstr "Смотрите" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7515" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7515" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7517" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7517" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" + +#~ msgid "Why does wheel include attached signatures?" +#~ msgstr "Почему колесо включает в себя прикрепленные подписи?" + +#~ msgid "" +#~ "Attached signatures are more convenient than detached signatures because " +#~ "they travel with the archive. Since only the individual files are " +#~ "signed, the archive can be recompressed without invalidating the " +#~ "signature or individual files can be verified without having to download " +#~ "the whole archive." +#~ msgstr "" +#~ "Прикрепленные подписи более удобны, чем отсоединенные, поскольку они " +#~ "путешествуют вместе с архивом. Поскольку подписываются только отдельные " +#~ "файлы, архив можно перекомпрессировать, не аннулируя подпись, или " +#~ "проверить отдельные файлы без необходимости загружать весь архив." + +#~ msgid "Why does wheel allow JWS signatures?" +#~ msgstr "Почему колесо разрешает подписи JWS?" + +#~ msgid "" +#~ "The JOSE specifications of which JWS is a part are designed to be easy to " +#~ "implement, a feature that is also one of wheel's primary design goals. " +#~ "JWS yields a useful, concise pure-Python implementation." +#~ msgstr "" +#~ "Спецификации JOSE, частью которых является JWS, разработаны для простоты " +#~ "реализации, что также является одной из основных целей дизайна Wheel. " +#~ "JWS представляет собой полезную и лаконичную реализацию на чистом Python." + +#~ msgid "Why does wheel also allow S/MIME signatures?" +#~ msgstr "Почему wheel также позволяет использовать подписи S/MIME?" + +#~ msgid "" +#~ "S/MIME signatures are allowed for users who need or want to use existing " +#~ "public key infrastructure with wheel." +#~ msgstr "" +#~ "Подписи S/MIME разрешены для пользователей, которым необходимо или " +#~ "хочется использовать существующую инфраструктуру открытых ключей с " +#~ "помощью колеса." + +#~ msgid "" +#~ "Signed packages are only a basic building block in a secure package " +#~ "update system. Wheel only provides the building block." +#~ msgstr "" +#~ "Подписанные пакеты являются лишь базовым элементом системы безопасного " +#~ "обновления пакетов. Wheel предоставляет только строительный блок." + +#~ msgid "The license expressions for these projects are:" +#~ msgstr "Лицензионные выражения для этих проектов следующие:" + #~ msgid "TUF Support - PEP 458" #~ msgstr "Поддержка TUF - PEP 458" diff --git a/locales/sai/LC_MESSAGES/messages.po b/locales/sai/LC_MESSAGES/messages.po index 0f4b4bc64..9bc8144b6 100644 --- a/locales/sai/LC_MESSAGES/messages.po +++ b/locales/sai/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -3405,9 +3405,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3580,54 +3580,54 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3635,11 +3635,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3648,11 +3648,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3660,26 +3660,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3691,38 +3691,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3731,21 +3731,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3754,11 +3754,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3766,15 +3766,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3782,21 +3782,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3949,7 +3949,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4305,7 +4305,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4627,7 +4627,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6686,11 +6686,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6726,7 +6727,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6739,29 +6741,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6773,65 +6775,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6840,18 +6842,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6860,11 +6862,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6874,7 +6876,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6883,11 +6885,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6899,24 +6901,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6924,17 +6926,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6945,11 +6947,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6957,14 +6959,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8740,7 +8742,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9356,40 +9358,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9397,25 +9403,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9423,45 +9429,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9472,31 +9478,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9900,7 +9906,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10005,90 +10011,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10097,26 +10103,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10124,28 +10130,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10153,33 +10159,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13230,86 +13236,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13318,116 +13320,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13437,51 +13368,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13489,7 +13380,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13497,18 +13388,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13517,7 +13408,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13528,7 +13419,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13546,7 +13437,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13555,7 +13446,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13569,24 +13460,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13594,24 +13485,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14365,11 +14260,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16201,17 +16096,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18219,7 +18120,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22271,7 +22172,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22310,7 +22211,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22530,14 +22431,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22571,7 +22472,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22579,45 +22480,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22625,7 +22526,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22634,23 +22535,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22659,14 +22560,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22676,7 +22577,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22684,14 +22585,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22701,45 +22602,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22748,7 +22649,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22758,17 +22659,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22776,7 +22677,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22785,11 +22686,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22797,11 +22698,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22864,11 +22765,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22877,65 +22778,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22943,7 +22844,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22954,7 +22855,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22963,33 +22864,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -22999,7 +22900,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23009,7 +22910,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23017,7 +22918,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23028,22 +22929,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23052,25 +22953,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23078,13 +22979,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23094,18 +22995,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23113,7 +23014,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23123,7 +23024,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23131,7 +23032,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23139,7 +23040,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23148,18 +23049,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23167,13 +23068,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23182,23 +23083,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23207,79 +23108,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24846,11 +24747,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24859,29 +24762,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24889,101 +24792,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24991,29 +24894,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25025,7 +24928,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25034,14 +24937,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25050,7 +24953,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25058,7 +24961,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25069,15 +24972,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25085,7 +24988,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25093,7 +24996,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25105,43 +25008,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25150,29 +25053,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26538,7 +26445,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26577,11 +26484,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/si/LC_MESSAGES/messages.po b/locales/si/LC_MESSAGES/messages.po index fb51d249c..f19d29357 100644 --- a/locales/si/LC_MESSAGES/messages.po +++ b/locales/si/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2022-06-11 08:19+0000\n" "Last-Translator: Kushan Gunasekera \n" "Language-Team: Sinhala `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3639,11 +3639,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3652,11 +3652,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3664,26 +3664,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3695,38 +3695,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3735,21 +3735,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3758,11 +3758,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3770,15 +3770,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3786,21 +3786,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3953,7 +3953,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4309,7 +4309,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4631,7 +4631,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6690,11 +6690,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6730,7 +6731,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6743,29 +6745,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6777,65 +6779,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6844,18 +6846,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6864,11 +6866,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6878,7 +6880,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6887,11 +6889,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6903,24 +6905,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6928,17 +6930,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6949,11 +6951,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6961,14 +6963,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8744,7 +8746,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9360,40 +9362,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9401,25 +9407,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9427,45 +9433,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9476,31 +9482,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9904,7 +9910,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10009,90 +10015,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10101,26 +10107,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10128,28 +10134,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10157,33 +10163,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13234,86 +13240,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13322,116 +13324,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13441,51 +13372,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13493,7 +13384,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13501,18 +13392,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13521,7 +13412,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13532,7 +13423,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13550,7 +13441,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13559,7 +13450,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13573,24 +13464,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13598,24 +13489,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14369,11 +14264,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16205,17 +16100,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18223,7 +18124,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22275,7 +22176,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22314,7 +22215,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22534,14 +22435,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22575,7 +22476,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22583,45 +22484,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22629,7 +22530,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22638,23 +22539,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22663,14 +22564,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22680,7 +22581,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22688,14 +22589,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22705,45 +22606,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22752,7 +22653,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22762,17 +22663,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22780,7 +22681,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22789,11 +22690,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22801,11 +22702,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22868,11 +22769,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22881,65 +22782,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22947,7 +22848,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22958,7 +22859,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22967,33 +22868,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23003,7 +22904,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23013,7 +22914,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23021,7 +22922,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23032,22 +22933,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23056,25 +22957,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23082,13 +22983,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23098,18 +22999,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23117,7 +23018,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23127,7 +23028,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23135,7 +23036,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23143,7 +23044,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23152,18 +23053,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23171,13 +23072,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23186,23 +23087,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23211,79 +23112,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24850,11 +24751,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24863,29 +24766,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24893,101 +24796,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24995,29 +24898,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25029,7 +24932,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25038,14 +24941,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25054,7 +24957,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25062,7 +24965,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25073,15 +24976,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25089,7 +24992,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25097,7 +25000,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25109,43 +25012,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25154,29 +25057,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26542,7 +26449,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26581,11 +26488,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/sk/LC_MESSAGES/messages.po b/locales/sk/LC_MESSAGES/messages.po index 5b36d8faa..06fcd0ff7 100644 --- a/locales/sk/LC_MESSAGES/messages.po +++ b/locales/sk/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2024-11-02 00:54+0000\n" "Last-Translator: Milan Šalka \n" "Language-Team: Slovak `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3761,11 +3761,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3774,11 +3774,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3786,28 +3786,28 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 #, fuzzy #| msgid "Project name" msgid "Root License Directory" msgstr "Meno projektu" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3819,38 +3819,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3859,21 +3859,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3882,11 +3882,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3894,15 +3894,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3910,23 +3910,23 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 #, fuzzy #| msgid "Project" msgid "Wheel Project" msgstr "Projekt" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -4079,7 +4079,7 @@ msgstr "Poznámka" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4435,7 +4435,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4763,7 +4763,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6844,11 +6844,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6884,7 +6885,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6897,29 +6899,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6931,65 +6933,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6998,18 +7000,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -7018,11 +7020,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -7032,7 +7034,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -7041,11 +7043,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -7057,24 +7059,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -7082,17 +7084,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -7103,11 +7105,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7115,14 +7117,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8902,7 +8904,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9520,42 +9522,46 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy #| msgid "Reviewing new contributions" msgid "Building distributions" msgstr "Preskúmanie nových príspevkov" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9563,25 +9569,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9589,45 +9595,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9638,31 +9644,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -10066,7 +10072,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10171,90 +10177,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10263,26 +10269,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10290,28 +10296,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10319,33 +10325,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13396,88 +13402,84 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 #, fuzzy #| msgid "Project name" msgid "Subdirectory name" msgstr "Meno projektu" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13486,116 +13488,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13605,51 +13536,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13657,7 +13548,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13665,18 +13556,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13685,7 +13576,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13696,7 +13587,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13714,7 +13605,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13723,7 +13614,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13737,24 +13628,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13762,24 +13653,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14539,11 +14434,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16379,17 +16274,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18405,7 +18306,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22483,7 +22384,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22522,7 +22423,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22742,14 +22643,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22783,7 +22684,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22791,45 +22692,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22837,7 +22738,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22846,23 +22747,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22871,14 +22772,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22888,7 +22789,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22896,14 +22797,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22913,45 +22814,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22960,7 +22861,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22970,17 +22871,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22988,7 +22889,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22997,11 +22898,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -23009,11 +22910,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -23076,11 +22977,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -23089,65 +22990,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23155,7 +23056,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23166,7 +23067,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23175,33 +23076,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23211,7 +23112,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23221,7 +23122,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23229,7 +23130,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23240,22 +23141,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23264,25 +23165,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23290,13 +23191,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23306,18 +23207,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23325,7 +23226,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23335,7 +23236,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23343,7 +23244,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23351,7 +23252,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23360,18 +23261,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23379,13 +23280,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23394,23 +23295,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23419,79 +23320,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -25060,11 +24961,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -25073,29 +24976,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -25103,101 +25006,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25205,29 +25108,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25239,7 +25142,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25248,14 +25151,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25264,7 +25167,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25272,7 +25175,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25283,15 +25186,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25299,7 +25202,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25307,7 +25210,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25319,43 +25222,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25364,29 +25267,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26754,7 +26661,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26793,11 +26700,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/ta/LC_MESSAGES/messages.po b/locales/ta/LC_MESSAGES/messages.po index ee1ab3131..e6f2ab7f3 100644 --- a/locales/ta/LC_MESSAGES/messages.po +++ b/locales/ta/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-07-19 06:36+0000\n" "Last-Translator: தமிழ்நேரம் \n" "Language-Team: Tamil `, " +#| "host projects on `GitHub `_ and `Bitbucket " +#| "`_, and discuss issues on the `distutils-sig " +#| "mailing list `_ and `the Python Discourse forum `__." msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" "பைபா என்பது பைதான் பேக்கேசிங்கில் தொடர்புடைய பல திட்டங்களை பராமரிக்கும் ஒரு பணிக்குழு " "ஆகும். அவர்கள் ஒரு தளத்தை பராமரிக்கின்றனர்: doc: `pypa.io `, `github " @@ -4478,11 +4493,11 @@ msgstr "" "`_, மற்றும்` டிச்டிடில்ச்-சிக் அஞ்சல் பட்டியலில் உள்ள சிக்கல்களைப் பற்றி விவாதிக்கவும் //" "discuss.python.org/c/packaging>`__." -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "பைதான் தொகுப்பு அட்டவணை (PYPI)" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " @@ -4492,11 +4507,11 @@ msgstr "" "குறியீடு`. அனைத்து பைதான் டெவலப்பர்களுக்கும் அவர்களின் விநியோகங்களை உட்கொள்வதற்கும் " "விநியோகிப்பதற்கும் இது திறந்திருக்கும்." -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "pypi.org" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " @@ -4506,22 +4521,22 @@ msgstr "" "(PYPI)`. இது 2017 ஆம் ஆண்டில் மரபு குறியீட்டு டொமைன் பெயரை மாற்றியது, `` " "pypi.python.org``. இது இயக்கப்படுகிறது: ref: `கிடங்கு`." -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "pyproject.toml" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" "கருவி-அம்போச்டிக்: கால: `திட்டம்` விவரக்குறிப்பு கோப்பு. வரையறுக்கப்பட்டுள்ளது: PEP: " "`518`." -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "வெளியீடு" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." @@ -4529,7 +4544,7 @@ msgstr "" "A இன் ச்னாப்சாட்: கால: `திட்டம்` ஒரு குறிப்பிட்ட கட்டத்தில், பதிப்பு அடையாளங்காட்டியால் " "குறிக்கப்படுகிறது." -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -4540,11 +4555,11 @@ msgstr "" "கொண்டிருக்கலாம். எடுத்துக்காட்டாக, ஒரு திட்டத்தின் பதிப்பு 1.0 வெளியிடப்பட்டால், அது ஒரு " "மூல விநியோக வடிவம் மற்றும் சாளரங்கள் நிறுவி விநியோக வடிவத்தில் கிடைக்கக்கூடும்." -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "தேவை" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -4555,11 +4570,11 @@ msgstr "" "ஒரு விவரக்குறிப்பு ஒரு: கால: `தொகுப்பு <விநியோக தொகுப்பு>` நிறுவப்பட வேண்டும். . " "மேலும் தகவலுக்கு, பார்க்க: ref: `PIP: PIP INSTALL` குறிப்பு." -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "தேவை விவரக்குறிப்பு" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -4572,11 +4587,11 @@ msgstr "" "விவரக்குறிப்பாகும், அங்கு \"FOO\" என்பது திட்ட பெயர், மற்றும் \"> = 1.3\" பகுதி: கால: " "`பதிப்பு விவரக்குறிப்பு`" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "தேவைகள் கோப்பு" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " @@ -4586,15 +4601,15 @@ msgstr "" "குறிப்பு: `பிப்`. மேலும் தகவலுக்கு, பார்க்க: ref: `பிப்` டாக்ச் ஆன்: குறிப்பு:` பிப்: " "தேவைகள் கோப்புகள்`." -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "ரூட் உரிம அடைவு" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "உரிம அடைவு" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -4613,17 +4628,17 @@ msgstr "" "`` உரிம-கோப்பு``: கால: `கோர் மேனிலை தரவு புலம்` இல் பதிவு செய்யப்பட்ட பாதைகள் " "தொடர்புடையவை." -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "setup.py" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "setup.cfg" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." @@ -4631,11 +4646,11 @@ msgstr "" "இதற்கான திட்ட விவரக்குறிப்பு கோப்புகள்: ref: `distutils` மற்றும்: ref:` setuptools`. " "மேலும் காண்க: கால: `pyproject.toml`." -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "மூல காப்பகம்" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution `அல்லது: " "கால:` கட்டப்பட்ட விநியோகம்`." -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "மூல வழங்கல் (அல்லது \"SDIST\")" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -4663,11 +4678,11 @@ msgstr "" "உருவாக்க ஒரு: கால: `கட்டப்பட்ட விநியோகம்`. காண்க: குறிப்பு: மேலும் தகவலுக்கு `தொகுப்பு " "வடிவங்கள்." -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "கணினி தொகுப்பு" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." @@ -4675,11 +4690,11 @@ msgstr "" "இயக்க முறைமைக்கு சொந்தமான வடிவத்தில் வழங்கப்பட்ட ஒரு தொகுப்பு, எ.கா. ஒரு RPM அல்லது " "DPKG கோப்பு." -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "பதிப்பு விவரக்குறிப்பு" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -4693,11 +4708,11 @@ msgstr "" "முழு விளக்கத்திற்கு. இந்த விவரக்குறிப்பிற்கான உதவி இதில் செயல்படுத்தப்பட்டது: குறிப்பு: " "`setuptools` v8.0 மற்றும்: Ref:` Pip` v6.0." -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "மெய்நிகர் சூழல்" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -4708,15 +4723,15 @@ msgstr "" "நிறுவ அனுமதிக்கும் ஒரு தனிமைப்படுத்தப்பட்ட பைதான் சூழல். மேலும் தகவலுக்கு, பகுதியைப் " "பார்க்கவும்: ref: `மெய்நிகர் சூழல்களை உருவாக்குதல் மற்றும் பயன்படுத்துதல்`." -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "சக்கர வடிவம்" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "சக்கரம்" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -4728,22 +4743,22 @@ msgstr "" "காண்க: குறிப்பு: மேலும் தகவலுக்கு `தொகுப்பு வடிவங்கள். அதன் குறிப்பு செயல்படுத்தலுடன் " "குழப்பமடையக்கூடாது, தி: கால: `சக்கர திட்டம்`." -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "சக்கர திட்டம்" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" "பைபா குறிப்பு செயல்படுத்தல்: கால: `சக்கர வடிவமைப்பு`; காண்க: குறிப்பு: `சக்கரம்`." -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "வேலை தொகுப்பு" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -4938,7 +4953,7 @@ msgstr "விவரம்" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "எடுத்துக்காட்டுகள்" @@ -5344,7 +5359,7 @@ msgstr "" "`பாண்டாச்-GBQ`_ திட்டம்` பாண்டாச்`_ வழியாக வினவல் முடிவுகளை அணுக அனுமதிக்கிறது." #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "குறிப்புகள்" @@ -5802,7 +5817,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" "இருப்பினும், இந்த தொடரியல் சற்று நடைமுறைக்கு மாறானது; நாங்கள் மேலே வரையறுத்த நுழைவு " "புள்ளியின் பெயர் தொகுப்பு பெயருடன் பொருந்தவில்லை என்பதால், எந்த இயங்கக்கூடிய ச்கிரிப்டை " @@ -8492,11 +8507,12 @@ msgstr "உரிமம் அளிக்கும் எடுத்துக #| "aims to provide clear guidance how to migrate from the legacy to the " #| "standardized way of declaring licenses." msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" ". இந்த ஆவணம் உரிமைகளை அறிவிக்கும் தரப்படுத்தப்பட்ட வழிக்கு மரபுரிமையிலிருந்து எவ்வாறு " "குடிபெயர்வது என்பதை தெளிவான வழிகாட்டுதலை வழங்குவதை நோக்கமாகக் கொண்டுள்ளது." @@ -8543,7 +8559,11 @@ msgstr "" "அல்லது, திட்டம் பயன்படுத்தப்பட்டால்: கோப்பு: `setup.cfg`, அதன்` `[மெட்டாடேட்டா]` `அட்டவணை:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +#, fuzzy +#| msgid "" +#| "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "விநியோக தொகுப்புகளுக்கான வெளியீட்டு கோர் மேனிலை தரவு பின்னர்:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -8560,11 +8580,11 @@ msgstr "" "உரிமம்` இல் சக்கரம், மற்றும் அங்கிருந்து தள கோப்பகத்தில் (எ.கா.: கோப்பு: `தள-பேக்கேச்கள்/`) " "நிறுவலில் திறக்கப்படவில்லை; ." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "மேம்பட்ட எடுத்துக்காட்டு" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " @@ -8574,11 +8594,14 @@ msgstr "" "கோப்பு: `setuptools/_vendor/` மற்றும்: கோப்பு: `pkg_resources/_vendor/` " "கோப்பகங்கள்; குறிப்பாக:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" -msgstr "இந்த திட்டங்களுக்கான உரிம வெளிப்பாடுகள்:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +#, fuzzy +#| msgid "Some additional examples of valid ``License-Expression`` values:" +msgid "The appropriate license expressions are:" +msgstr "" +"செல்லுபடியாகும் `` உரிம-வெளிப்பாடு`` மதிப்புகளின் சில கூடுதல் எடுத்துக்காட்டுகள்:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " @@ -8588,7 +8611,7 @@ msgstr "" "சார்புநிலைகள் இந்த மெட்டாடேட்டாவைக் கொண்டிருக்கும், இது அனைத்து உரிம வெளிப்பாடுகளையும் " "ஒன்றாக இணைக்கிறது. அத்தகைய வெளிப்பாடு இருக்கலாம்:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -8606,7 +8629,7 @@ msgstr "" "கோப்பகத்தில் அப்பாச்சி 2.0 மற்றும் 2-உட்பிரிவு பி.எச்.டி உரிம உரை உள்ளது, மற்றும் " "பேக்கேசிங் பதிப்புரிமை அறிக்கை மற்றும் `உரிமம் தேர்வு அறிவிப்பு <பேக்கேசிங் லிசன்ச்_>` __." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " @@ -8615,11 +8638,11 @@ msgstr "" "குறிப்பாக, உரிமக் கோப்புகள் திட்ட மூல மரத்தில் பின்வரும் பாதைகளில் அமைந்துள்ளன என்று " "கருதுகிறோம் (திட்ட மூலத்துடன் தொடர்புடையது: கோப்பு: `pyproject.toml`):" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "அனைத்தையும் ஒன்றாக இணைத்து, எங்கள்: கோப்பு: `pyproject.toml` இருக்கும்:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" @@ -8627,16 +8650,16 @@ msgstr "" "அல்லது மாற்றாக, உரிமக் கோப்புகளை வெளிப்படையாக குறிப்பிடலாம் (பாதைகள் குளோப் வடிவங்கள் " "என விளக்கப்படும்):" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "எங்கள் திட்டம் பயன்படுத்தப்பட்டால்: கோப்பு: `setup.cfg`, இதை நாங்கள் வரையறுக்கலாம்:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "எந்தவொரு அணுகுமுறையிலும், விநியோகத்தில் வெளியீட்டு கோர் மெட்டாடேட்டா:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " @@ -8646,7 +8669,7 @@ msgstr "" "`கோர் மெட்டாடேட்டாவில் குறிப்பிடப்பட்டுள்ள செடிப்டூல்ச் வெளியீட்டின் பதிப்பாகவும், உரிமக் " "கோப்புகள் பாதைகளில் அமைந்திருக்கும்:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" @@ -8654,7 +8677,7 @@ msgstr "" "கட்டப்பட்ட சக்கரத்தில், உடன்: கோப்பு: `/` காப்பகத்தின் வேர் மற்றும் `` {VERSION} `` " "முந்தையதைப் போல, உரிமக் கோப்புகள் சேமிக்கப்படும்:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " @@ -8663,20 +8686,20 @@ msgstr "" "இறுதியாக, நிறுவப்பட்ட திட்டத்தில், உடன்: கோப்பு: `தள-பேக்கேச்கள்/` தள அடைவு மற்றும் `` " "{VERSION} `` முந்தையதைப் போல, உரிமக் கோப்புகள் நிறுவப்படும்:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "வெளிப்பாடு எடுத்துக்காட்டுகள்" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" "செல்லுபடியாகும் `` உரிம-வெளிப்பாடு`` மதிப்புகளின் சில கூடுதல் எடுத்துக்காட்டுகள்:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "பயனர் காட்சிகள்" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -8690,11 +8713,11 @@ msgstr "" "உறுதியாக தெரியாவிட்டால், உரிமம் பெற்ற சட்ட பயிற்சியாளரை தங்கள் அதிகார வரம்பில் அணுக " "வேண்டும்." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "என்னிடம் ஒரு தனியார் தொகுப்பு உள்ளது, அது விநியோகிக்கப்படாது" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " @@ -8704,7 +8727,7 @@ msgstr "" "வீட்டுக்கு வெளியே, இது * வழக்கமாக * முறையான உரிமத்தை சேர்க்க கண்டிப்பாக அவசியமில்லை, " "எனவே நீங்கள் இங்கே கூடுதல் எதையும் செய்ய வேண்டிய அவசியமில்லை." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -8716,12 +8739,12 @@ msgstr "" "தனியுரிமைக்குறி`, மற்றும்/அல்லது பதிப்புரிமை அறிக்கை மற்றும் ஒரு சட்ட அறிவிப்புகளை " "ஒரு: கோப்பு: `உரிமம். உங்கள் திட்ட அடைவு, இது தானாக பேக்கேசிங் கருவிகளால் சேர்க்கப்படும்." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" "நான் எனது சொந்த வேலையை சட்டரீதியான கட்டுப்பாடுகள் இல்லாமல் பகிர்ந்து கொள்ள விரும்புகிறேன்" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -8738,7 +8761,7 @@ msgstr "" "வேலையுடன் யாரையும் அவர்கள் விரும்பியதைச் செய்ய அனுமதிக்கிறது (நீங்கள் வழக்குத் தொடுப்பதைத் " "தவிர, நீங்கள் விரும்பாதது)." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -8751,11 +8774,11 @@ msgstr "" "pyproject.toml` இன் கீழ் `` உரிமம் = \"எம்ஐடி\" சேர்க்கவும் அல்லது அதன் கட்டமைப்பு கோப்பு/" "பிரிவில் இருந்தால். நீங்கள் முடித்துவிட்டீர்கள்!" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "எனது திட்டத்தை ஒரு குறிப்பிட்ட உரிமத்தின் கீழ் விநியோகிக்க விரும்புகிறேன்" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -8773,7 +8796,7 @@ msgstr "" "`Choosealicense __ __ அல்லது` spdx __ __ " "போன்ற தளங்களில் காணலாம்." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." @@ -8781,11 +8804,11 @@ msgstr "" "பல பிரபலமான குறியீடு ஓச்ட்கள், திட்ட வார்ப்புருக்கள் மற்றும் பேக்கேசிங் கருவிகள் உங்களுக்காக " "உரிமக் கோப்பைச் சேர்க்கலாம், மேலும் எதிர்காலத்திலும் வெளிப்பாட்டை ஆதரிக்கலாம்." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "ஏற்கனவே உரிமம் பெற்ற ஒரு தொகுப்பை நான் பராமரிக்கிறேன்" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " @@ -8794,7 +8817,17 @@ msgstr "" "உங்கள் திட்டத்தில் ஏற்கனவே உரிமக் கோப்புகள் மற்றும் மேனிலை தரவு இருந்தால், புதிய " "செயல்பாட்டைப் பயன்படுத்த நீங்கள் இரண்டு மாற்றங்களை மட்டுமே செய்ய வேண்டும்." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 +#, fuzzy +#| msgid "" +#| "In your project config file, enter your license expression under " +#| "``license`` (``[project]`` table in :file:`pyproject.toml`), or the " +#| "equivalent for your packaging tool, and make sure to remove any legacy " +#| "``license`` table subkeys or ``License ::`` classifiers. Your existing " +#| "``license`` value may already be valid as one (e.g. ``MIT``, ``Apache-2.0 " +#| "OR BSD-2-Clause``, etc); otherwise, check the `SPDX license list " +#| "`__ for the identifier that matches the license used in your " +#| "project." msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -8802,7 +8835,7 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" "உங்கள் திட்ட கட்டமைப்பு கோப்பில், உங்கள் உரிம வெளிப்பாட்டை `` உரிமம்`` (`` [திட்டம்] `` " "அட்டவணை: கோப்பு: `pyproject.toml`), அல்லது உங்கள் பேக்கேசிங் கருவிக்கு சமமானதாக " @@ -8812,7 +8845,7 @@ msgstr "" "பொருந்தக்கூடிய அடையாளங்காட்டிக்கு `SPDX உரிம பட்டியல் ` __ __ ஐ " "சரிபார்க்கவும்." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " @@ -8821,7 +8854,7 @@ msgstr "" "உங்கள் உரிமக் கோப்புகளை `` [திட்டம்] `` `இன் கீழ்` `உரிமக் கோப்புகள்` இன் கீழ் பட்டியலிடுவதை " "உறுதிசெய்க: கோப்பு:` pyproject.toml` அல்லது உங்கள் கருவியின் உள்ளமைவு கோப்பில்." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -8839,11 +8872,11 @@ msgstr "" "உரிமம் பெறும் மெட்டாடேட்டாவை தானாக மாற்றுவதை ஆதரிக்கக்கூடும்; மேலும் தகவலுக்கு உங்கள் " "கருவியின் ஆவணங்களை சரிபார்க்கவும்." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "எனது தொகுப்பில் வெவ்வேறு உரிமங்களின் கீழ் பிற குறியீடு அடங்கும்" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -8855,14 +8888,23 @@ msgstr "" "இருந்தால், சம்பந்தப்பட்ட உரிமங்களையும் அவற்றுக்கிடையேயான உறவை விவரிக்க உரிம வெளிப்பாட்டை " "உருவாக்கலாம்." -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 -msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 +#, fuzzy +#| msgid "" +#| "In short, ``License-1 AND License-2`` mean that *both* licenses apply to " +#| "your project, or parts of it (for example, you included a file under " +#| "another license), and ``License-1 OR License-2`` means that *either* of " +#| "the licenses can be used, at the user's option (for example, you want to " +#| "allow users a choice of multiple licenses). You can use parenthesis " +#| "(``()``) for grouping to form expressions that cover even the most " +#| "complex situations." +msgid "" +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" "சுருக்கமாக, `` உரிமம் -1 மற்றும் உரிமம் -2`` என்பது உங்கள் திட்டத்திற்கு அல்லது அதன் " "பகுதிகளுக்கு * இரண்டு * உரிமங்களும் பொருந்தும் என்று பொருள் (எடுத்துக்காட்டாக, நீங்கள் " @@ -11271,8 +11313,13 @@ msgstr "" "போது இரண்டு புரவலன் செய்யப்பட்ட சேவைகள் உள்ளன:" #: ../source/guides/supporting-multiple-python-versions.rst:65 +#, fuzzy +#| msgid "" +#| "`Travis CI `_ provides both a Linux and a macOS " +#| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#| "bit while the macOS is 10.9.2 at the time of writing." msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -12128,7 +12175,13 @@ msgstr "" "பைத்தான் 3.12 இல் உள்ள நிலையான நூலகத்திலிருந்து அகற்றப்பட்டது, இருப்பினும் இது இன்னும் " "செட்டுப்டூல்களிலிருந்து கிடைக்கிறது." -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +#, fuzzy +#| msgid "Building binary extensions" +msgid "Build backends for extension modules" +msgstr "பைனரி நீட்டிப்புகளை உருவாக்குதல்" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " @@ -12138,7 +12191,7 @@ msgstr "" "எழுதப்பட்ட மொழிக்கு பிரத்யேக ஆதரவுடன் ஒரு உருவாக்க முறையைப் பயன்படுத்துவது நல்லது, " "எடுத்துக்காட்டாக:" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," @@ -12146,7 +12199,7 @@ msgstr "" ":ref:`setuptools` -- natively supports C and C++ (with third-party " "செருகுநிரல்கள் க்கு Go and Rust)," -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," @@ -12154,7 +12207,7 @@ msgstr "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and மற்றொன்று மொழிகள் supported " "by Meson," -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," @@ -12162,15 +12215,15 @@ msgstr "" ":ref:`scikit-build-core` -- C, C++, Fortran, and மற்றொன்று மொழிகள் supported by " "CMake," -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr ": ref: `` Maturin` - ரச்ட், சரக்கு வழியாக." -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "கட்டிட வழங்கல்" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -12182,7 +12235,7 @@ msgstr "" "இது உங்களை பின்தளத்தில் கட்டியெழுப்புவதைத் தூண்டும்: குறிப்பு: `அறிவிக்கப்பட்ட ` இல்: கோப்பு: `pyproject.toml`." -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " @@ -12191,7 +12244,7 @@ msgstr "" "** செய்ய வேண்டாம் ** இந்த பணிக்கு `` பைதான் அமைவு. அனைத்து நேரடி அழைப்புகளும்: கோப்பு: " "`setup.py`: ref:` நீக்கப்பட்ட `." -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " @@ -12201,11 +12254,11 @@ msgstr "" "தளங்களுக்கான சக்கரங்களை விநியோகிக்க விரும்பினால், பயன்படுத்தவும்: ref: `cibuildwheel` " "உங்கள் தொஒ அமைப்பின் ஒரு பகுதியாக விநியோகிக்கக்கூடிய சக்கரங்களை உருவாக்க." -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "PYPI இல் பதிவேற்றுகிறது" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -12217,7 +12270,7 @@ msgstr "" "வெளியீட்டு>`, இது ஒரு சிஐ/சிடி பணிப்பாய்வுகளிலிருந்து பைபிக்கு பாதுகாப்பாக பதிவேற்ற " "அனுமதிக்கிறது கைமுறையாக கட்டமைக்கப்பட்ட பநிஇ கிள்ளாக்கு." -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" @@ -12225,29 +12278,29 @@ msgstr "" "நவம்பர் 2024 நிலவரப்படி, நம்பகமான வெளியீட்டு வழங்குநர்களாக பின்வரும் தளங்களை PYPI " "ஆதரிக்கிறது:" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "Github செயல்கள் (`` https: // github.com`` இல்)" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "Gitlab ci/cd (`https: // gitlab.com` இல்)" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "செயல்பாட்டு" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "கூகிள் முகில்" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "கிடைக்கக்கூடிய மற்ற முறை, தொகுப்பை கைமுறையாகப் பயன்படுத்துவதே: ref: `கயிறு`." -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." @@ -12255,11 +12308,11 @@ msgstr "" "** ஒருபோதும் ** இந்த பணிக்கு `` பைதான் அமைவு. இருப்பதற்கு கூடுதலாக: ref: `நீக்கப்பட்ட " "`, இது பாதுகாப்பற்றது." -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "பணிப்பாய்வு கருவிகள்" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -12277,31 +12330,31 @@ msgstr "" "பூட்டு கோப்புகள் . அவர்கள் பெரும்பாலும் மேலே குறிப்பிட்ட கருவிகளை பேட்டை கீழ் " "அழைக்கிறார்கள். அகர வரிசைப்படி:" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr ": Ref: `Flit`," -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr ": ref: `அட்ச்`," -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr ": DOC: `Nox `," -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr ": Ref: `PDM`," -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr ": ref: `பைபென்வ்`," -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr ": ref: `கவிதை`," -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr ": டாக்: `டாக்ச் <டோக்ச்: குறியீட்டு>`." @@ -12821,7 +12874,7 @@ msgid "``license`` and ``license-files``" msgstr "`` உரிம-கோப்புகள்``" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -12960,25 +13013,32 @@ msgstr "" "மென்பொருளைத் தவிர்ப்பதால்." #: ../source/guides/writing-pyproject-toml.rst:353 -msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +#, fuzzy +#| msgid "" +#| "If your project is licensed with a license that doesn't have an existing " +#| "SPDX identifier, you can create a custom one in format ``LicenseRef-" +#| "[idstring]``. The custom identifiers must follow the SPDX specification, " +#| "`clause 10.1 `_ of the version 2.2 or any later " +#| "compatible one." +msgid "" +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" "ஏற்கனவே உள்ள SPDX அடையாளங்காட்டி இல்லாத உரிமத்துடன் உங்கள் திட்டத்திற்கு உரிமம் " "வழங்கப்பட்டால், நீங்கள் தனிப்பயன் ஒன்றை வடிவத்தில் உருவாக்கலாம் `` licenseref- [idstring] " "``. தனிப்பயன் அடையாளங்காட்டிகள் SPDX விவரக்குறிப்பைப் பின்பற்ற வேண்டும், `பிரிவு 10.1 " " _ _ _ _ _ _ அல்லது பின்னர் இணக்கமான ஏதேனும் ஒன்று." -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "`` உரிம-கோப்புகள்``" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." @@ -12986,11 +13046,11 @@ msgstr "" "இது உங்கள் தொகுப்புடன் விநியோகிக்க விரும்பும் பிற சட்டத் தகவல்களைக் கொண்ட உரிமக் கோப்புகள் " "மற்றும் கோப்புகளின் பட்டியல்." -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "குளோப் வடிவங்கள் விவரக்குறிப்பைப் பின்பற்ற வேண்டும்:" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." @@ -12998,7 +13058,7 @@ msgstr "" "எண்ணெழுத்து எழுத்துக்கள், அடிக்கோடிட்டு (`` _``), ஐபன்கள் (`` -``) மற்றும் புள்ளிகள் " "(`` .``) ஆகியவை சொற்களஞ்சியத்துடன் பொருந்தும்." -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." @@ -13006,11 +13066,11 @@ msgstr "" "சிறப்பு எழுத்துக்கள்: ``*``, ``? ``, `` ** `` மற்றும் எழுத்து வரம்புகள்: [] " "ஆதரிக்கப்படுகின்றன." -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "பாதை டிலிமிட்டர்கள் முன்னோக்கி ச்லாச் எழுத்துக்குறியாக இருக்க வேண்டும் (``/``)." -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." @@ -13018,15 +13078,15 @@ msgstr "" "வடிவங்கள் கொண்ட கோப்பகத்துடன் தொடர்புடையவை: கோப்பு: `pyproject.toml`, இதனால் ஒரு ச்லாச் " "பாத்திரத்துடன் தொடங்கக்கூடாது." -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "பெற்றோர் அடைவு குறிகாட்டிகள் (`` ..``) பயன்படுத்தப்படக்கூடாது." -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "ஒவ்வொரு குளோபும் குறைந்தது ஒரு கோப்பை பொருத்த வேண்டும்." -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." @@ -13034,13 +13094,13 @@ msgstr "" "நேரடி பாதைகள் செல்லுபடியாகும் குளோப்கள். இந்த விவரக்குறிப்பால் மூடப்படாத எந்த எழுத்துக்கள் " "அல்லது எழுத்துக்குறி காட்சிகளும் தவறானவை." -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "`` முக்கிய வார்த்தைகள்``" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -13048,13 +13108,13 @@ msgstr "" "இந்த முக்கிய வார்த்தைகளை மக்கள் தேடும்போது உங்கள் திட்டத்தை பரிந்துரைக்க இது பைபியின் தேடல் " "பெட்டியை உதவும்." -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "`` வகைப்படுத்திகள்``" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -13062,7 +13122,7 @@ msgstr "" "உங்கள் திட்டத்திற்கு பொருந்தும் PYPI வகைப்படுத்திகளின் பட்டியல். `சாத்தியக்கூறுகளின் முழு " "பட்டியலையும் சரிபார்க்கவும் <வகைப்படுத்தி-பட்டியல்_>` _." -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -13076,7 +13136,7 @@ msgstr "" "நிறுவக்கூடிய பைதான் பதிப்புகளை உண்மையில் கட்டுப்படுத்த, பயன்படுத்தவும்: ref: `-பைதான் " "தேவை." -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " @@ -13086,13 +13146,13 @@ msgstr "" "வேண்டாம்`` வகைப்படுத்தியைப் பயன்படுத்தவும். `` தனிப்பட்ட :: `` உடன் தொடங்கி " "வகைப்படுத்திகளுடன் தொகுப்புகளை PYPI எப்போதும் நிராகரிக்கும்." -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "`` urls``" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -13100,7 +13160,7 @@ msgstr "" "உங்கள் திட்டத்துடன் தொடர்புடைய முகவரி களின் பட்டியல், உங்கள் PYPI திட்ட பக்கத்தின் இடது " "பக்கப்பட்டியில் காட்டப்படும்." -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -13112,7 +13172,7 @@ msgstr "" " `_ PYPI- குறிப்பிட்ட " "முகவரி செயலாக்கத்திற்கு." -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" @@ -13121,7 +13181,7 @@ msgstr "" "லேபிளில் இடைவெளிகள் இருந்தால், அதை மேற்கோள் காட்ட வேண்டும், எ.கா., `` வலைத்தளம் = " "\"https://example.com\" ." -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " @@ -13131,7 +13191,7 @@ msgstr "" "முகவரி களுக்கு பொருத்தமான இடங்களில், மெட்டாடேட்டாவின் நுகர்வோர் (தொகுப்பு குறியீடுகள் " "போன்றவை) தங்கள் விளக்கக்காட்சியை நிபுணத்துவம் பெற முடியும்." -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " @@ -13140,7 +13200,7 @@ msgstr "" "எடுத்துக்காட்டாக, பின்வரும் மெட்டாடேட்டாவில், `` MyHomePage`` அல்லது `` \"பதிவிறக்கம் " "இணைப்பு\" `` என்பது ஒரு நன்கு அறியப்பட்ட சிட்டை, எனவே அவை சொற்களஞ்சியமாக வழங்கப்படும்:" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -13152,11 +13212,11 @@ msgstr "" "சொற்பொருளை மனதில் கொண்டு வழங்கலாம் (திட்டத்தின் முகப்புப் பக்கம் மற்றும் அதன் வெளிப்புற " "பதிவிறக்க இடம் முறையே)." -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "மேம்பட்ட செருகுநிரல்கள்" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " @@ -13166,15 +13226,15 @@ msgstr "" "மற்றும் பைக்மென்ட்ச்_ ஆகியவை அடங்கும். அத்தகைய சொருகி உருவாக்க, நீங்கள் அதை `` " "[Project.entry- புள்ளிகள்] `` இதைப் போன்ற ஒரு துணைப்பிரிவில் அறிவிக்க வேண்டும்:" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "பார்க்க: ref: `சொருகி வழிகாட்டி <சொருகி-நுழைவு புள்ளிகள்>` மேலும் தகவலுக்கு." -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "ஒரு முழு சான்று" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -13183,7 +13243,7 @@ msgstr "" "``-பைதான் = \"<= 3.10\" `` இங்கே. `இந்த வலைப்பதிவு இடுகையில் <-பைதான்-பிளாக்-" "போச்ட்_>` _ சாத்தியமான சிக்கல்கள் தொடர்பான சில தகவல்களைக் கொண்டுள்ளது." -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -17148,12 +17208,19 @@ msgid "WHEEL is the wheel metadata specific to a build of the package." msgstr "சக்கரம் என்பது தொகுப்பின் கட்டமைப்பிற்கு குறிப்பிட்ட சக்கர மேனிலை தரவு ஆகும்." #: ../source/specifications/binary-distribution-format.rst:239 +#, fuzzy +#| msgid "" +#| "RECORD is a list of (almost) all the files in the wheel and their secure " +#| "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " +#| "hash of itself, must include its hash. The hash algorithm must be sha256 " +#| "or better; specifically, md5 and sha1 are not permitted, as signed wheel " +#| "files rely on the strong hashes in RECORD to validate the integrity of " +#| "the archive." msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" "பதிவு என்பது சக்கரத்தில் உள்ள அனைத்து கோப்புகளையும் அவற்றின் பாதுகாப்பான ஆச்களின் " "(கிட்டத்தட்ட) பட்டியல். PEP 376 ஐப் போலன்றி, பதிவைத் தவிர ஒவ்வொரு கோப்பும், தன்னைத்தானே " @@ -17162,98 +17229,97 @@ msgstr "" "ஏனெனில் கையொப்பமிடப்பட்ட சக்கர கோப்புகள் காப்பகத்தின் ஒருமைப்பாட்டை சரிபார்க்க பதிவில் உள்ள " "வலுவான ஆச்களை நம்பியுள்ளன." -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "PEP 376 இன் நிறுவி மற்றும் கோரப்பட்டவை காப்பகத்தில் சேர்க்கப்படவில்லை." -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" -"Record.JWS டிசிட்டல் கையொப்பங்களுக்கு பயன்படுத்தப்படுகிறது. இது பதிவில் " -"குறிப்பிடப்படவில்லை." - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -"S/MIME கையொப்பங்களை தங்கள் சக்கரக் கோப்புகளைப் பாதுகாக்க விரும்பும் எவருக்கும் மரியாதையாக " -"Record.P7S அனுமதிக்கப்படுகிறது. இது பதிவில் குறிப்பிடப்படவில்லை." -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 +#, fuzzy +#| msgid "" +#| "During extraction, wheel installers verify all the hashes in RECORD " +#| "against the file contents. Apart from RECORD and its signatures, " +#| "installation will fail if any file in the archive is not both mentioned " +#| "and correctly hashed in RECORD." msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" "பிரித்தெடுக்கும் போது, சக்கர நிறுவிகள் கோப்பு உள்ளடக்கங்களுக்கு எதிராக பதிவுசெய்யப்பட்ட " "அனைத்து ஆச்களையும் சரிபார்க்கின்றன. பதிவு மற்றும் அதன் கையொப்பங்களைத் தவிர, காப்பகத்தில் " "உள்ள எந்தவொரு கோப்பும் குறிப்பிடப்படவில்லை மற்றும் பதிவில் சரியாக ஏச் செய்யப்பட்டால் நிறுவல் " "தோல்வியடையும்." -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 #, fuzzy #| msgid "Project name" msgid "Subdirectory name" msgstr "திட்ட பெயர்" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 #, fuzzy #| msgid "``license``" msgid "``licenses``" msgstr "`` உரிமம்``" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 #, fuzzy #| msgid "``license-files``" msgid "``license_files``" msgstr "`` உரிம-கோப்புகள்``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 #, fuzzy #| msgid "``LIB``" msgid "``LICENSES``" msgstr "`` லிப்``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "தி: கோப்பு: `.டிச்ட்-இன்ஃபோ/உரிமங்கள்/` அடைவு" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -17267,24 +17333,24 @@ msgstr "" "கோப்பு`` புலங்களில் பட்டியலிடப்பட்டுள்ள கோப்புகள்: கோப்பு: `மெட்டாடேட்டா` அந்தந்த பாதைகளில் " "கோப்பு : கோப்பு: `உரிமங்கள்/` அடைவு." -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 #, fuzzy #| msgid "The :file:`.dist-info/licenses/` directory" msgid "The :file:`.dist-info/sboms/` directory" msgstr "தி: கோப்பு: `.டிச்ட்-இன்ஃபோ/உரிமங்கள்/` அடைவு" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr ".டேட்டா அடைவு" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " @@ -17293,7 +17359,7 @@ msgstr "" "தள-தொகுப்புகளுக்குள் பொதுவாக நிறுவப்படாத எந்த கோப்பும் .data கோப்பகத்திற்குள் செல்கிறது, " "இது .dist-info கோப்பகமாக பெயரிடப்பட்டது, ஆனால் .டேட்டா/ நீட்டிப்பு ::" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " @@ -17303,111 +17369,18 @@ msgstr "" "உள்ளன. நிறுவலின் போது இந்த துணை அடைவுகளின் உள்ளடக்கங்கள் அவற்றின் இலக்கு பாதைகளில் " "நகர்த்தப்படுகின்றன." -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "கையொப்பமிடப்பட்ட சக்கர கோப்புகள்" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" -"சக்கர கோப்புகளில் டிசிட்டல் கையொப்பங்களை செயல்படுத்தும் நீட்டிக்கப்பட்ட பதிவு அடங்கும். ஒரு " -"பாதுகாப்பான ஆச் `` டைசச்ட் பெயர் = urlsafe_b64encode_nopad (டைசச்ட்) `` `` (ட்ரெயில்ங் " -"= எழுத்துக்கள் இல்லாத URLSAFE BASE64 குறியாக்கம்) ஒரு MD5SUM க்கு பதிலாக இரண்டாவது " -"நெடுவரிசையாக சேர்க்க PEP 376 இன் பதிவு மாற்றப்பட்டுள்ளது. .Pyc கோப்புகள் போன்ற எந்தவொரு " -"உருவாக்கப்பட்ட கோப்புகளும் உட்பட, சாத்தியமான அனைத்து உள்ளீடுகளும் ஆசெட் செய்யப்படுகின்றன, " -"ஆனால் அதன் சொந்த ஆசைக் கொண்டிருக்க முடியாத பதிவு அல்ல. உதாரணமாக ::" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" -"கையொப்ப கோப்பு (கள்) பதிவு. JWS மற்றும் Record.P7 கள் பதிவில் குறிப்பிடப்படவில்லை, " -"ஏனெனில் அவை பதிவு உருவாக்கப்பட்ட பின்னரே சேர்க்க முடியும். காப்பகத்தில் உள்ள மற்ற ஒவ்வொரு " -"கோப்பிலும் பதிவில் சரியான ஆச் இருக்க வேண்டும் அல்லது நிறுவல் தோல்வியடையும்." - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" -"சாதொபொகு வலை கையொப்பங்கள் பயன்படுத்தப்பட்டால், ஒன்று அல்லது அதற்கு மேற்பட்ட சாதொபொகு வலை " -"கையொப்பம் சாதொபொகு சீரியலைசேசன் (JWS-JS) கையொப்பங்கள் ஒரு கோப்பு பதிவில் " -"சேமிக்கப்படுகின்றன. பதிவுக்கு அருகிலுள்ள JWS. கையொப்பத்தின் சாதொபொகு பேலோடாக SHA-256 " -"ஆச் பதிவின் மூலம் பதிவில் கையெழுத்திட JWS பயன்படுத்தப்படுகிறது:" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "(ஆச் மதிப்பு என்பது பதிவில் பயன்படுத்தப்படும் அதே வடிவமாகும்.)" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" -"Record.P7S பயன்படுத்தப்பட்டால், அதில் பதிவின் பிரிக்கப்பட்ட S/MIME வடிவமைப்பு கையொப்பம் " -"இருக்க வேண்டும்." - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" -"டிசிட்டல் கையொப்பங்களைப் புரிந்து கொள்ள ஒரு சக்கர நிறுவி தேவையில்லை, ஆனால் " -"பிரித்தெடுக்கப்பட்ட கோப்பு உள்ளடக்கங்களுக்கு எதிராக பதிவில் உள்ள ஆச்களை சரிபார்க்க வேண்டும். " -"நிறுவி கோப்பு ஆச்களை பதிவுக்கு எதிராக சரிபார்க்கும்போது, ஒரு தனி கையொப்பச் சரிபார்ப்பு " -"கையொப்பத்துடன் பொருந்துகிறது என்பதை மட்டுமே நிறுவ வேண்டும்." - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "பார்க்க" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "https://datatracker.ietf.org/doc/html/rfc7515" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "https://datatracker.ietf.org/doc/html/rfc7517" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "கேள்விகள்" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" "சக்கரம் ஒரு .டேட்டா கோப்பகத்தை வரையறுக்கிறது. எனது எல்லா தரவையும் நான் அங்கு வைக்க " "வேண்டுமா?" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -17422,62 +17395,11 @@ msgstr "" "தொடர்ந்து `` pkgutil.get_data (தொகுப்பு, வளம்) `` அந்த * கோப்புகள் வழக்கமாக * " "சக்கரத்தின் * `` .data`` கோப்பகத்தில் விநியோகிக்கப்படாது என்றாலும் தொடர்ந்து பயன்படுத்தலாம்." -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "வீல் ஏன் இணைக்கப்பட்ட கையொப்பங்களை உள்ளடக்கியது?" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" -"இணைக்கப்பட்ட கையொப்பங்கள் பிரிக்கப்பட்ட கையொப்பங்களை விட வசதியானவை, ஏனெனில் அவை " -"காப்பகத்துடன் பயணிக்கின்றன. தனிப்பட்ட கோப்புகள் மட்டுமே கையொப்பமிடப்பட்டதால், கையொப்பத்தை " -"செல்லாததாக்காமல் காப்பகத்தை மறுசீரமைக்க முடியும் அல்லது முழு காப்பகத்தையும் பதிவிறக்கம் " -"செய்யாமல் தனிப்பட்ட கோப்புகளை சரிபார்க்க முடியும்." - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "JWS கையொப்பங்களை சக்கரம் ஏன் அனுமதிக்கிறது?" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" -"சே.டபிள்யூ.எச் ஒரு பகுதியாக இருக்கும் சோச் விவரக்குறிப்புகள் நடைமுறைப்படுத்த எளிதானதாக " -"வடிவமைக்கப்பட்டுள்ளன, இது சக்கரத்தின் முதன்மை வடிவமைப்பு இலக்குகளில் ஒன்றாகும். JWS ஒரு " -"பயனுள்ள, சுருக்கமான தூய-பைதான் செயல்படுத்தலை அளிக்கிறது." - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "வீல் ஏன் எச்/மைம் கையொப்பங்களையும் அனுமதிக்கிறது?" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" -"தற்போதுள்ள பொது விசை உள்கட்டமைப்பை சக்கரத்துடன் பயன்படுத்த விரும்பும் அல்லது பயன்படுத்த " -"விரும்பும் பயனர்களுக்கு எச்/மைம் கையொப்பங்கள் அனுமதிக்கப்படுகின்றன." - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" -"கையொப்பமிடப்பட்ட தொகுப்புகள் பாதுகாப்பான தொகுப்பு புதுப்பிப்பு அமைப்பில் ஒரு அடிப்படை " -"கட்டுமானத் தொகுதி மட்டுமே. சக்கரம் கட்டுமானத் தொகுதியை மட்டுமே வழங்குகிறது." - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "\"பியூரிலிப்\" வெர்சச் \"பிளாட்ட்லிப்\" உடன் என்ன ஒப்பந்தம்?" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -17489,7 +17411,7 @@ msgstr "" "lib/pythonx.y/site-packages' மற்றும் இயங்குதள சார்பு தொகுப்புகளை '/usr/lib64/" "pythonx.y/site-packages' க்கு நிறுவுகிறது." -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -17501,7 +17423,7 @@ msgstr "" "ரூட்டில் உள்ள கோப்புகள், மற்றும் \"பியூரிலிப்\" மற்றும் \"பிளாட்லிப்\" வகைகளில் கோப்புகளை " "வைத்திருப்பது சட்டபூர்வமானது." -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " @@ -17511,11 +17433,11 @@ msgstr "" "அல்லது \"பிளாட்லிப்\" ஒன்று மட்டுமே இருக்க வேண்டும், மேலும் அந்த கோப்புகள் \"ரூட்-இச்-" "பூரெலிப்\" க்கு வழங்கப்பட்ட பொருத்தமான அமைப்போடு வேரில் இருக்க வேண்டும்." -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "சக்கர கோப்பிலிருந்து நேரடியாக பைதான் குறியீட்டை இறக்குமதி செய்ய முடியுமா?" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -17529,7 +17451,7 @@ msgstr "" "இந்த நடத்தை வடிவமைப்பு வடிவமைப்பின் இயல்பான விளைவு என்றாலும், உண்மையில் அதை " "நம்பியிருப்பது பொதுவாக ஊக்கமளிக்கிறது." -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -17547,7 +17469,7 @@ msgstr "" "நீட்டிப்புகளுக்கான நிலையான உருவாக்க இயந்திரங்களுடன் முழுமையாக ஒருங்கிணைத்தல் தலைப்பு " "கோப்புகள் பொருத்தமான இடத்தில்)." -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -17578,7 +17500,7 @@ msgstr "" "மென்பொருள் சுருக்கமான வள ஏபிஐகளை உள்நாட்டில் சரியாகப் பயன்படுத்தும்போது கூட, வெளிப்புற " "கூறுகளுடன் இடைமுகப்படுத்த இன்னும் உண்மையான வட்டு கோப்பின் கிடைக்கும் தன்மை தேவைப்படலாம்." -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -17592,7 +17514,7 @@ msgstr "" "செய்தால், பல திட்டங்களுக்கு உண்மையான பிழையாக ஏற்றுக்கொள்வதற்கு முன்பு முழுமையாக " "நிறுவப்பட்ட தொகுப்புடன் மீண்டும் உருவாக்கத் தோல்வி தேவைப்படும் என்பதை அறிந்து கொள்ளுங்கள்." -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -17606,18 +17528,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "வரலாறு" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "பிப்ரவரி 2013: இந்த விவரக்குறிப்பு மூலம் அங்கீகரிக்கப்பட்டது: PEP: `427`." -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." @@ -17625,7 +17547,7 @@ msgstr "" "பிப்ரவரி 2021: சக்கர கோப்பு பெயர்களில் தப்பிப்பது தொடர்பான விதிகள் திருத்தப்பட்டன, " "பிரபலமான கருவிகள் உண்மையில் என்ன செய்கின்றன என்பதற்கு ஏற்ப அவற்றைக் கொண்டுவருவதற்காக." -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -17637,7 +17559,7 @@ msgstr "" "எதிர்கொள்ளும்போது கருவிகளின் எதிர்பார்க்கப்படும் நடத்தை முறையாக வரையறுக்கப்படவில்லை, எனவே " "கருவிகளுக்கு இடையில் வேறுபடலாம்)." -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " @@ -17646,7 +17568,7 @@ msgstr "" "டிசம்பர் 2024: தி: கோப்பு: `.டிச்ட்-இன்ஃபோ/உரிமங்கள்/` அடைவு மூலம் குறிப்பிடப்பட்டது: " "PEP: `639`." -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." @@ -17654,11 +17576,15 @@ msgstr "" "சனவரி 2025: அந்த பெயர் மற்றும் பதிப்பை தெளிவுபடுத்தியது `` .dist-info`` மற்றும் " "`.data`` கோப்பகங்களுக்கு இயல்பாக்கப்பட வேண்டும்." -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "பின் இணைப்பு" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "எடுத்துக்காட்டு urlsafe-base64-NOPAD செயல்படுத்தல் ::" @@ -18489,12 +18415,20 @@ msgstr "" "\"2.2\", \"2.3\" மற்றும் \"2.4\"." #: ../source/specifications/core-metadata.rst:55 -msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +#, fuzzy +#| msgid "" +#| "Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " +#| "greater than the highest version they support, and MUST fail if " +#| "``metadata_version`` has a greater major version than the highest version " +#| "they support (as described in the :ref:`Version specifier specification " +#| "`, the major version is the value before the first " +#| "dot)." +msgid "" +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" "மெட்டாடேட்டாவை உட்கொள்ளும் தானியங்கி கருவிகள் `` மெட்டாடேட்டா_்வெர்சன்`` அவர்கள் ஆதரிக்கும் " "மிக உயர்ந்த பதிப்பை விட அதிகமாக இருந்தால் எச்சரிக்க வேண்டும், மேலும் அவர்கள் ஆதரிக்கும் " @@ -20874,7 +20808,13 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" @@ -20882,11 +20822,11 @@ msgstr "" "PIP, பைதான் தொகுப்புகளுக்கான பரிந்துரைக்கப்பட்ட நிறுவி (http://pip.readthedocs.org/" "en/stable/)" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "வோக்கோசு பெக் நூலகம். (https://pypi.python.org/pypi/parsly/)" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -23607,7 +23547,7 @@ msgstr "" "எடுத்துக்காட்டு." #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "பரிந்துரைகள்" @@ -28567,7 +28507,7 @@ msgstr "" "கருவிகள் ** இந்த சரத்தை இறுதி பயனர்களுக்கு மேற்பரப்பு செய்யலாம்." #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -28613,7 +28553,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -28928,7 +28868,7 @@ msgstr "" "ஒரு அகராதியாக இருக்கும் ஒரு வரிசை." #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." @@ -28937,7 +28877,7 @@ msgstr "" "cerialization_> ____." #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "உதாரணமாக:" @@ -28986,7 +28926,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -28994,45 +28934,45 @@ msgid "``name``: The normalized name of the project." msgstr "`` பெயர்``: திட்டத்தின் இயல்பாக்கப்பட்ட பெயர்." #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." -msgstr "`` கோப்புகள்``: அகராதிகளின் பட்டியல், ஒவ்வொன்றும் ஒரு தனிப்பட்ட கோப்பைக் குறிக்கும்." - -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 +#: ../source/specifications/simple-repository-api.rst:496 msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "`` கோப்புகள்``: அகராதிகளின் பட்டியல், ஒவ்வொன்றும் ஒரு தனிப்பட்ட கோப்பைக் குறிக்கும்." + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -29044,7 +28984,7 @@ msgstr "" "தொடர்புடைய கோப்புகள் இல்லாத பதிப்புகள் இருக்கலாம் (சேவையகத்திற்கு அத்தகைய கருத்து " "இருந்தால், கோப்புகள் பதிவேற்றப்படாத பதிப்புகளைக் குறிக்க)." -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -29053,23 +28993,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "ஒவ்வொரு தனிப்பட்ட கோப்பு அகராதியிலும் பின்வரும் விசைகள் உள்ளன:" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "`` கோப்பு பெயர்``: பிரதிநிதித்துவப்படுத்தப்படும் கோப்பு பெயர்." -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "`` url``: கோப்பிலிருந்து பெறக்கூடிய முகவரி." -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -29083,7 +29023,7 @@ msgstr "" "அல்லது ஒன்றும் இல்லை). இந்த ஆச் பெயர்கள் ** ** எப்போதும் சிறிய எழுத்துக்களாக இயல்பாக்கப்பட " "வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " @@ -29093,7 +29033,7 @@ msgstr "" "என்றாலும், குறைந்தது ஒரு பாதுகாப்பான, உத்தரவாதமளிக்கும் ஆச் எப்போதும் சேர்க்கப்பட வேண்டும் " "என்று ** மிகவும் ** பரிந்துரைக்கப்படுகிறது." -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -29109,7 +29049,7 @@ msgstr "" "எப்போதும் சேர்க்கப்பட வேண்டும். இந்த விவரக்குறிப்பின் போது, `` சா 256`` குறிப்பாக " "பரிந்துரைக்கப்படுகிறது." -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -29120,7 +29060,7 @@ msgstr "" "மெட்டாடேட்டா புலம். இது இருக்கும் இடத்தில், நிறுவி கருவிகள் ** ** தேவையை நிறைவு " "செய்யாத பைதான் பதிப்பில் நிறுவும் போது பதிவிறக்கத்தை புறக்கணிக்க வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " @@ -29130,7 +29070,7 @@ msgstr "" "` `,` `-` விசைக்கு தேவையில்லை சாதொபொகு இயல்பாகவே " "எதையும் தவிர வேறு எந்த சிறப்பு தப்பிப்பும் தேவையில்லை." -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -29140,7 +29080,7 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " @@ -29149,7 +29089,7 @@ msgstr "" "இது ஒரு பூலியனுக்கு பதிலாக ஆச்களின் அகராதியாக இருக்கும்போது, `` ஆச்கள்`` விசையின் " "அதே தேவைகள் மற்றும் பரிந்துரைகள் அனைத்தும் இந்த விசையிலும் உண்மையாகவே இருக்கின்றன." -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " @@ -29159,32 +29099,32 @@ msgstr "" "முக்கிய மதிப்பு உண்மையாக இருந்தால், மேனிலை தரவு கோப்பு உள்ளது, அது பொய்யானது என்றால் " "அது இல்லை." -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" "சேவையகங்கள் மேனிலை தரவு கோப்பின் ஆச்களை முடிந்தால் கிடைக்கச் செய்ய பரிந்துரைக்கப்படுகிறது." -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -29198,7 +29138,7 @@ msgstr "" "` (`{file_url} .asc``). இந்த விசை இல்லை என்றால், " "கையொப்பம் இருக்கலாம் அல்லது இல்லாமல் இருக்கலாம்." -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 #, fuzzy #| msgid "" #| "``yanked``: An **optional** key which may be either a boolean to indicate " @@ -29223,17 +29163,17 @@ msgstr "" "சுட்டிக்காட்டப்பட்ட கோப்பு \"அசைக்கப்பட்டுள்ளது\" என்பதைக் குறிக்கும் வகையில் விளக்கப்பட " "வேண்டும்: ref: `api yank விவரக்குறிப்பு <எளிய-ச்பிரோபோசிட்டரி-அபி-யாங்க்>`." -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -29241,7 +29181,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -29250,11 +29190,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -29266,11 +29206,11 @@ msgstr "" "ஒரு முகவரி ஆக இருக்க வேண்டும், இதில் `` தரவு-முன்னேற்றம்`` போன்ற விதிமுறைகள்: rew: " "`அடிப்படை உஉகுமொ பநிஇ விவரக்குறிப்பு `." -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -29355,11 +29295,11 @@ msgstr "" "` `உரை/HTML`` உள்ளடக்க வகையைப் பயன்படுத்த பநிஇ " "பதில்கள், இந்த விவரக்குறிப்பு` `` உரை/html`` `` `` `` `conternt." -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "பதிப்பு + வடிவமைப்பு தேர்வு" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -29373,7 +29313,7 @@ msgstr "" "விளைவிக்காமல் பநிஇ க்கு சாத்தியமான புதிய முக்கிய பதிப்பைச் சேர்க்க முடிந்தால் அது நன்மை " "பயக்கும்." -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation _ _." -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" @@ -29390,7 +29330,7 @@ msgstr "" "இந்த விவரக்குறிப்பு சேவையகத்தால் இயக்கப்படும் உள்ளடக்க பேச்சுவார்த்தை முழுவதையும் " "முழுமையாக விவரிக்காது என்றாலும், ஓட்டம் தோராயமாக:" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." @@ -29398,7 +29338,7 @@ msgstr "" "கிளையன்ட் ஒரு `` ஏற்றுக்கொள்` தலைப்பு கொண்ட ஒரு HTTP கோரிக்கையை அவர்கள் புரிந்து " "கொள்ளக்கூடிய அனைத்து பதிப்பு+வடிவமைப்பு உள்ளடக்க வகைகளையும் பட்டியலிடுகிறது." -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " @@ -29408,7 +29348,7 @@ msgstr "" "தேர்ந்தெடுக்கிறது, பின்னர் அந்த உள்ளடக்க வகையைப் பயன்படுத்தி ஒரு பதிலை வழங்குகிறது (`` " "ஏற்றுக்கொள்` தலைப்பு `` ஏற்றுக்கொள்: */ *``)." -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " @@ -29418,7 +29358,7 @@ msgstr "" "அவர்கள் எவ்வாறு பதிலளிக்க வேண்டும் என்பதற்கான 3 வெவ்வேறு விருப்பங்களுக்கு இடையில் அவர்கள் " "தேர்வு செய்ய முடியும்:" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." @@ -29426,7 +29366,7 @@ msgstr "" "கிளையன்ட் கோரியதைத் தவிர வேறு இயல்புநிலை உள்ளடக்க வகையைத் தேர்ந்தெடுத்து, அதனுடன் " "பதிலைத் தரவும்." -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " @@ -29436,7 +29376,7 @@ msgstr "" "ஏற்றுக்கொள்ள முடியாதது `` பதிலைத் தரவும், மேலும் பதிலளிக்க இயல்புநிலை உள்ளடக்க வகையைத் " "தேர்ந்தெடுக்க சேவையகம் முடியவில்லை அல்லது விரும்பவில்லை." -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." @@ -29444,7 +29384,7 @@ msgstr "" "ஒரு HTTP `` 300 பல தேர்வுகள்` `பதிலைத் தரவும், இது தேர்ந்தெடுக்கப்பட்ட சாத்தியமான " "அனைத்து பதில்களின் பட்டியலையும் கொண்டுள்ளது." -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." @@ -29452,7 +29392,7 @@ msgstr "" "கிளையன்ட் பதிலை விளக்குகிறது, சேவையகம் பதிலளித்திருக்கக்கூடிய பல்வேறு வகையான " "பதில்களைக் கையாளுகிறது." -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -29464,7 +29404,7 @@ msgstr "" "** சாத்தியமான எல்லா பதில்களையும் கையாளத் தயாராக இருக்க வேண்டும், அந்த கிளையண்டிற்கு எந்த " "வகையிலும் மிகவும் அர்த்தமுள்ளதாக இருக்கும்." -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -29482,7 +29422,7 @@ msgstr "" "சாத்தியமில்லை, எனவே சிறந்த முறையில் இந்த பதில் `` 406 ஏற்றுக்கொள்ள முடியாத `` பிழை " "போலவே கருதப்படும்." -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -29495,7 +29435,7 @@ msgstr "" "ஏற்றுக்கொள்ளுங்கள்: பயன்பாடு/vnd.pypi.simple.latest+json` `` `` `` `` `` `` `` ` " "`` பயன்பாடு/vnd.pypi.simple.v1+json```)." -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " @@ -29505,19 +29445,19 @@ msgstr "" "வகைகளின் கமாவைப் பிரித்த பட்டியல். கோரப்படும் ஒவ்வொரு உள்ளடக்க வகைக்கும் இது மூன்று " "வெவ்வேறு வடிவங்களை ஆதரிக்கிறது:" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "`` $ type/$ subtype``" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "`` $ type/*``" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "``*/*``" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " @@ -29527,7 +29467,7 @@ msgstr "" "இருக்கும் `` $ வகை/$ துணை வகை``, ஏனெனில் நீங்கள் விரும்பும் பதிப்பு மற்றும் வடிவமைப்பைக் " "குறிப்பிடுவதற்கான ஒரே வழி இதுதான்." -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -29543,7 +29483,7 @@ msgstr "" "`தலைப்பின்` தர மதிப்பு _ தொடரியல் பயன்படுத்தலாம்." -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -29558,7 +29498,7 @@ msgstr "" "குறைந்த தரத்துடன் நுழைவதை விட முன்னுரிமை உள்ளது, மேலும் தகுதி இல்லாத எந்தவொரு " "நுழைவும் `` 1`` தரத்திற்கு இயல்புநிலையாக இருக்கும்." -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -29569,7 +29509,7 @@ msgstr "" "முன்னுரிமையைப் பொருட்படுத்தாமல் தேர்ந்தெடுக்க இலவசம் என்பதை நினைவில் கொள்ள வேண்டும், மேலும் " "அவர்கள் செய்த உள்ளடக்க வகையை கூட ** ** கேட்கவில்லை." -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -29587,12 +29527,12 @@ msgstr "" "cf3696a81b341925f82f8cb527e656176987565/src/pip/_internal/" "collector.py#-123-150> _" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" "ஒரு வாடிக்கையாளர் எவ்வாறு செயல்பட முடியும் என்பதற்கான எடுத்துக்காட்டு போல் இருக்கும்:" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " @@ -29602,11 +29542,11 @@ msgstr "" "ஆதரிக்க விரும்பினால், அவர்கள் விரும்பாத உள்ளடக்க வகைகளை `` ஏற்றுக்கொள்` தலைப்பிலிருந்து " "அகற்றி, அவற்றைப் பெறுவதை பிழையாக மாற்றிவிடுவார்கள்." -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "மாற்று பேச்சுவார்த்தை வழிமுறைகள்" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -29620,11 +29560,11 @@ msgstr "" "சூழ்நிலைகள் உள்ளன. அந்த நிகழ்வுகளுக்கு இந்த விவரக்குறிப்பில் மாற்று பேச்சுவார்த்தை " "வழிமுறைகள் உள்ளன, அவை அதற்கு பதிலாக * விருப்பமாக * பயன்படுத்தப்படலாம்." -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "முகவரி அளவுரு" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " @@ -29634,7 +29574,7 @@ msgstr "" "வாடிக்கையாளர்களை அனுமதிக்க `` வடிவமைப்பு`` என்ற முகவரி அளவுருவை ஆதரிக்க தேர்வு " "செய்யலாம்." -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " @@ -29644,7 +29584,7 @@ msgstr "" "வேண்டும். பல உள்ளடக்க வகைகள், காடு கார்டுகள், தர மதிப்புகள் போன்றவற்றை கடந்து செல்வது ... " "** அல்ல ** ஆதரிக்கப்படவில்லை." -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -29657,7 +29597,7 @@ msgstr "" "குறிப்புகளை ஒரு குறிப்பிட்ட பதிப்பு+வடிவமைப்போடு இணைக்க அனுமதிப்பதற்காக நோக்கமாக " "உள்ளது." -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." @@ -29665,7 +29605,7 @@ msgstr "" "இந்த அளவுருவை ஆதரிக்காத சேவையகங்கள் பிழையைக் கொண்டிருக்கும்போது அதைத் திருப்பித் தரத் " "தேர்வுசெய்யலாம் அல்லது அவை எளிமையாக அதன் இருப்பை புறக்கணிக்கக்கூடும்." -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -29680,11 +29620,11 @@ msgstr "" "எந்தவொரு பிழையும் தேர்வு செய்யத் தேர்வுசெய்யலாம், அல்லது நிலையான சேவையக பேச்சுவார்த்தை " "பொதுவாகக் கிடைக்காது,` 406, திரும்புவதற்கான இயல்புநிலை வகை)." -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "இறுதிப்புள்ளி உள்ளமைவு" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " @@ -29694,7 +29634,7 @@ msgstr "" "பேச்சுவார்த்தைகளைப் பயன்படுத்துவதன் இயல்பான விளைவு மற்றும் கிடைக்கக்கூடிய உள்ளடக்க வகைகளில் " "எது அவற்றின் இயல்புநிலை என்பதைத் தேர்ந்தெடுக்க சேவையகங்களை அனுமதிக்கிறது." -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -29705,7 +29645,7 @@ msgstr "" "செயல்படுத்த முடியாவிட்டால், அதற்கு பதிலாக பயனர்கள் தங்கள் வாடிக்கையாளரை அவர்கள் விரும்பும் " "பதிப்பைத் தேர்ந்தெடுக்க வெளிப்படையாக கட்டமைக்க வேண்டும் என்றால், அது ஒரு உதவி உள்ளமைவு." -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -29721,7 +29661,7 @@ msgstr "" "தலைப்பைப் பயன்படுத்தி ஒரு கிளையன்ட் கோரிக்கையைச் செய்யும்போது, சேவையகம் அதைப் " "புறக்கணித்து, அந்த இறுதிப் புள்ளியுடன் ஒத்த உள்ளடக்க வகையை திருப்பித் தரலாம்." -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -29733,7 +29673,7 @@ msgstr "" "சேவையகத்திற்கு ஒரு கோரிக்கையைச் செய்யும்போது, * சரியான உள்ளடக்க வகையை உள்ளடக்கிய ஒரு " "`` `ஏற்றுக்கொள்`` தலைப்பை வெளியிடுங்கள்." -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -29744,7 +29684,7 @@ msgstr "" "இயல்புநிலை செயல்படுத்தல் முடிவுகள் என்று ச்பெக் ஆசிரியர்கள் நம்புவதைக் குறிக்கிறது, ஆனால் " "இந்த முடிவுகளுடன் பொருந்தக்கூடிய எந்தவொரு தேவையையும் இது குறிக்கிறது." -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -29758,11 +29698,11 @@ msgstr "" "முயற்சித்தனர், இது வாடிக்கையாளர்களை தன்னால் முடிந்த சிறந்த தேர்வுகளைச் செய்ய " "முயற்சிக்கிறது." -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "சேவையகங்கள் பரிந்துரைக்கப்படுகிறது:" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " @@ -29773,7 +29713,7 @@ msgstr "" "முடிந்தவரை, அல்லது குறைந்தபட்சம் உஉகுமொ பதில்களைப் பயன்படுத்தும் கீழான போக்குவரத்தை அவர்கள் " "பெறும் வரை." -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -29784,7 +29724,7 @@ msgstr "" "தெரிந்த எந்த உள்ளடக்க வகைகளும் இல்லை, சேவையகம் ஒருபோதும்` `300 பல தேர்வு`` பதிலைத் " "தரக்கூடாது, அதற்கு பதிலாக` `406 ஏற்றுக்கொள்ள முடியாதது`` பதிலைத் தரும்." -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." @@ -29792,7 +29732,7 @@ msgstr "" "இருப்பினும், எண்ட்பாயிண்ட் உள்ளமைவைப் பயன்படுத்தத் தேர்வுசெய்தால், அந்த இறுதிப்புள்ளிக்கு " "எதிர்பார்க்கப்படும் உள்ளடக்க வகையில் `` 200 சரி`` பதிலைத் தர வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -29806,11 +29746,11 @@ msgstr "" "தரமான முன்னுரிமை மதிப்புகளையும் கணக்கில் எடுத்துக்கொள்கிறது, மேலும் இது `` உரை/HTML`` " "உள்ளடக்க வகையை கடைசி முயற்சியாக மட்டுமே பயன்படுத்த வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "வாடிக்கையாளர்கள் என்று பரிந்துரைக்கப்படுகிறது:" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." @@ -29819,7 +29759,7 @@ msgstr "" "சேவையகத்தால் இயக்கப்படும் உள்ளடக்க பேச்சுவார்த்தையைப் பயன்படுத்தி, அவை நியாயமான முறையில் " "முடிந்தவரை." -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." @@ -29827,7 +29767,7 @@ msgstr "" "`` ஏற்றுக்கொள்` `தலைப்பைக் கட்டும் போது, நீங்கள் ஆதரிக்கும் அனைத்து உள்ளடக்க வகைகளையும் " "சேர்க்கவும்." -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -29841,7 +29781,7 @@ msgstr "" "பயன்படுத்துகிறீர்கள் என்றால், சில விளிம்பு நிகழ்வுகளில் நீங்கள் பாகுபடுத்த முடியாத சில " "வகையான உஉகுமொ பதில்கள் இருக்கக்கூடும் என்று நீங்கள் கவலைப்படுகிறீர்கள்)." -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " @@ -29851,7 +29791,7 @@ msgstr "" "ஒரு` `; q = 0.01`` மதிப்பை நீங்கள் * சேர்க்க வேண்டும் என்று பரிந்துரைக்கப்படுகிறது, இது " "நீங்கள் கோரும் ஒரே உள்ளடக்க வகையாக இல்லாவிட்டால்." -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." @@ -29859,7 +29799,7 @@ msgstr "" "இயல்பான செயல்பாட்டின் போது `` சமீபத்திய`` மேவு பதிப்பைப் பயன்படுத்துவதை விட, அவர்கள் " "தேடும் எந்த பதிப்புகளை வெளிப்படையாகத் தேர்ந்தெடுக்கவும்." -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." @@ -29867,19 +29807,19 @@ msgstr "" "பதிலின் `` உள்ளடக்க-வகை`` ஐச் சரிபார்த்து, நீங்கள் எதிர்பார்த்த ஒன்றோடு பொருந்துகிறது " "என்பதை உறுதிப்படுத்தவும்." -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "செப்டம்பர் 2015: உஉகுமொ வடிவமைப்பின் ஆரம்ப வடிவம், இல்: PEP: `503`" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "சூலை 2016: ஒரு புதுப்பிப்பில்-பைதான் மேனிலை தரவு தேவைப்படுகிறது: PEP: `503`" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "மே 2019: \"யாங்க்\" உதவி, இல்: பெப்: `592`" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" @@ -29887,7 +29827,7 @@ msgstr "" "சூலை 2020: பநிஇ பதிப்பு மாநாடு மற்றும் மேனிலை தரவு, மற்றும் உஉகுமொ வடிவமைப்பை பநிஇ " "V1 என அறிவித்தல், IN: PEP: `629`" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" @@ -29895,7 +29835,7 @@ msgstr "" "மே 2021: ஒரு தொகுப்பிலிருந்து சுயாதீனமாக தொகுப்பு மெட்டாடேட்டாவை வழங்குதல், IN: PEP: " "`658`" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" @@ -29904,7 +29844,7 @@ msgstr "" "செய்வதற்கான ஒரு பொறிமுறையுடன், இரு வடிவங்களையும் பநிஇ V1 என அறிவித்தல், IN: PEP: " "`691`" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" @@ -29912,7 +29852,7 @@ msgstr "" "அக்டோபர் 2022: திட்ட பதிப்புகள் மற்றும் கோப்பு அளவு மற்றும் சாதொபொகு வடிவத்தில் பதிவேற்ற " "நேரம், IN: PEP: `700`" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" @@ -29920,14 +29860,14 @@ msgstr "" "சூன் 2023: ஒரு தொகுப்பிலிருந்து சுயாதீனமாக தொகுப்பு மெட்டாடேட்டாவை வழங்கும் புலத்தை " "மறுபெயரிடுதல், IN: PEP: `714`" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" "நவம்பர் 2024: உஉகுமொ மற்றும் சாதொபொகு வடிவங்களில் ஆதார மேனிலை தரவு, IN: PEP: `740`" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 #, fuzzy #| msgid "" #| "November 2024: provenance metadata in the HTML and JSON formats, " @@ -29937,7 +29877,7 @@ msgid "" msgstr "" "நவம்பர் 2024: உஉகுமொ மற்றும் சாதொபொகு வடிவங்களில் ஆதார மேனிலை தரவு, IN: PEP: `740`" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -32049,17 +31989,25 @@ msgid "Arbitrary equality" msgstr "தன்னிச்சையான ஒரு நிகர்" #: ../source/specifications/version-specifiers.rst:1017 +#, fuzzy +#| msgid "" +#| "Arbitrary equality comparisons are simple string equality operations " +#| "which do not take into account any of the semantic information such as " +#| "zero padding or local versions. This operator also does not support " +#| "prefix matching as the ``==`` operator does." msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" "தன்னிச்சையான சமத்துவ ஒப்பீடுகள் எளிய சரம் சமத்துவ செயல்பாடுகள் ஆகும், அவை சுழிய திணிப்பு " "அல்லது உள்ளக பதிப்புகள் போன்ற சொற்பொருள் தகவல்களை கணக்கில் எடுத்துக்கொள்ளாது. `` == `` " "ஆபரேட்டர் செய்வதால் இந்த ஆபரேட்டர் முன்னொட்டு பொருத்தத்தை ஆதரிக்காது." -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -32073,12 +32021,12 @@ msgstr "" "அட்ச் ஆக செயல்படுகிறது, இது ஒரு மரபு பதிப்பை நிறுவுவதற்கு இன்னும் இந்த " "விவரக்குறிப்புடன் பொருந்தாது." -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "ஒரு எடுத்துக்காட்டு `` === FOOBAR`` இது `` Foobar`` இன் பதிப்போடு பொருந்தும்." -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " @@ -32087,7 +32035,7 @@ msgstr "" "`` === 1.0`` போன்ற திட்டத்தின் இணைக்கப்படாத பதிப்பு வெளிப்படையாக தேவைப்படலாம், இது ஒரு " "பதிப்பு `` 1.0+கீழ்நிலை 1`` உடன் பொருந்தாது." -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." @@ -32095,11 +32043,11 @@ msgstr "" "இந்த ஆபரேட்டரின் பயன்பாடு பெரிதும் ஊக்கமளிக்கிறது மற்றும் கருவி பயன்படுத்தப்படும்போது ஒரு " "எச்சரிக்கையைக் காட்டக்கூடும்." -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "முன் வெளியீடுகளைக் கையாளுதல்" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -32111,15 +32059,15 @@ msgstr "" "இருக்காவிட்டால், பயனரால் வெளிப்படையாகக் கோரப்பட்டவை, அல்லது பதிப்பு விவரக்குறிப்பை " "நிறைவு செய்யும் ஒரே பதிப்பு முன் வெளியீட்டிற்கு முன்பே." -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "இயல்பாக, சார்பு தீர்மானக் கருவிகள் வேண்டும்:" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "அனைத்து பதிப்பு குறிப்பான்களுக்கும் ஏற்கனவே நிறுவப்பட்ட முன் வெளியீடுகளை ஏற்றுக்கொள்" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" @@ -32127,11 +32075,11 @@ msgstr "" "பதிப்பு விவரக்குறிப்புகளை நிறைவு செய்யும் இறுதி அல்லது இடுகை வெளியீடு இல்லாத பதிப்பு " "குறிப்பான்களுக்கான தொலைதூரத்தில் கிடைக்கக்கூடிய முன் வெளியீடுகளை ஏற்றுக்கொள்ளுங்கள்" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "மற்ற எல்லா முன் வெளியீடுகளையும் பரிசீலிப்பதில் இருந்து விலக்குங்கள்" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." @@ -32139,18 +32087,18 @@ msgstr "" "பதிப்பு விவரக்குறிப்பை நிறைவு செய்ய முன் வெளியீடு தேவைப்பட்டால் சார்பு தீர்க்கும் கருவிகள் " "எச்சரிக்கையை வெளியிடக்கூடும்." -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" "சார்பு தீர்க்கும் கருவிகள் பயனர்களை பின்வரும் மாற்று நடத்தைகளைக் கோர அனுமதிக்க வேண்டும்:" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "அனைத்து பதிப்பு குறிப்பான்களுக்கும் முன் வெளியீடுகளை ஏற்றுக்கொள்வது" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " @@ -32160,7 +32108,7 @@ msgstr "" "ஏற்கனவே உள்நாட்டில் நிறுவப்பட்டிருந்தால், அல்லது ஒரு குறிப்பிட்ட விவரக்குறிப்பை நிறைவு " "செய்வதற்கான ஒரே வழி ஒரு முன் வெளியீடு என்றால் பிழை அல்லது எச்சரிக்கையைப் புகாரளித்தல்)" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." @@ -32168,7 +32116,7 @@ msgstr "" "சார்பு தீர்க்கும் கருவிகள் மேற்கண்ட நடத்தை ஒரு விநியோக அடிப்படையில் கட்டுப்படுத்த " "அனுமதிக்கலாம்." -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." @@ -32176,25 +32124,25 @@ msgstr "" "பிந்தைய உறவுகள் மற்றும் இறுதி வெளியீடுகள் பதிப்பு விவரக்குறிப்பாளர்களில் சிறப்பு " "சிகிச்சையைப் பெறவில்லை - வெளிப்படையாக விலக்கப்படாவிட்டால் அவை எப்போதும் சேர்க்கப்படும்." -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" "`` ~ = 3.1``: பதிப்பு 3.1 அல்லது அதற்குப் பிறகு, ஆனால் பதிப்பு 4.0 அல்லது அதற்குப் " "பிறகு அல்ல." -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" "`` ~ = 3.1.2``: பதிப்பு 3.1.2 அல்லது அதற்குப் பிறகு, ஆனால் பதிப்பு 3.2.0 அல்லது " "அதற்குப் பிறகு அல்ல." -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" "`` ~ = 3.1a1``: பதிப்பு 3.1a1 அல்லது அதற்குப் பிறகு, ஆனால் பதிப்பு 4.0 அல்லது " "அதற்குப் பிறகு அல்ல." -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." @@ -32203,7 +32151,7 @@ msgstr "" "வெளியீடுகள், மேம்பாட்டு வெளியீடுகள் மற்றும் எந்த 3.1.x பராமரிப்பு வெளியீடுகளையும் " "விலக்குகிறது." -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." @@ -32211,7 +32159,7 @@ msgstr "" "`` == 3.1.*``: 3.1 உடன் தொடங்கும் எந்த பதிப்பும். `` ~ = 3.1.0`` இணக்கமான வெளியீட்டு " "விதிமுறைக்கு சமம்." -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." @@ -32219,11 +32167,11 @@ msgstr "" "`` ~ = 3.1.0,! = 3.1.3``: பதிப்பு 3.1.0 அல்லது அதற்குப் பிறகு, ஆனால் பதிப்பு 3.1.3 " "அல்ல, பதிப்பு 3.2.0 அல்லது அதற்குப் பிறகு அல்ல." -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "நேரடி குறிப்புகள்" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " @@ -32233,7 +32181,7 @@ msgstr "" "பயன்படுத்த அனுமதிக்கலாம். ஒரு நேரடி குறிப்பு ``@`` மற்றும் வெளிப்படையான முகவரி " "ஆகியவற்றைக் கொண்டுள்ளது." -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -32245,7 +32193,7 @@ msgstr "" "வேண்டும், மேலும் நேரடி குறிப்புகள் தகாத முறையில் பயன்படுத்தப்படும்போது அவற்றை முழுமையாக " "நிராகரிக்கலாம்." -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " @@ -32255,7 +32203,7 @@ msgstr "" "அனுமதிக்கக்கூடாது. நேரடி குறிப்புகள் வெளியீட்டாளர்களைக் காட்டிலும் மென்பொருள் " "ஒருங்கிணைப்பாளர்களுக்கான கருவியாக கருதப்படுகின்றன." -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " @@ -32265,15 +32213,15 @@ msgstr "" "SDIST அல்லது சக்கர பைனரி காப்பகமாக இருக்கலாம். ஆதரிக்கப்படும் சரியான முகவரி கள் மற்றும் " "இலக்குகள் கருவி சார்ந்ததாக இருக்கும்." -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "எடுத்துக்காட்டாக, ஒரு உள்ளக மூல காப்பகம் நேரடியாக குறிப்பிடப்படலாம் ::" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "மாற்றாக, முன்பே கட்டப்பட்ட காப்பகமும் குறிப்பிடப்படலாம் ::" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -32293,7 +32241,7 @@ msgstr "" "முகவரி ஐ நம்ப மறுக்கக்கூடும். அத்தகைய நேரடி குறிப்பு பாதுகாப்பற்ற போக்குவரத்தையும் " "பயன்படுத்தினால், தானியங்கி கருவிகள் முகவரி ஐ நம்பக்கூடாது." -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -32307,7 +32255,7 @@ msgstr "" "224'```, `'' சா 256'```,` '' சா 384'``, மற்றும் `'' சா 512'`` ஆகியவற்றைக் " "கொண்டுள்ளது." -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " @@ -32317,7 +32265,7 @@ msgstr "" "`` முகவரி துண்டின் ஒரு பகுதியாக நுழைவு ஆகியவற்றைச் சேர்ப்பதன் மூலம் எதிர்பார்க்கப்படும் " "ஆச் மதிப்பு குறிப்பிடப்படலாம்." -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -32332,7 +32280,7 @@ msgstr "" "பதிப்பு கட்டுப்பாட்டு அமைப்புகளுக்கான ஆச்களைக் காணவில்லை என்ற எச்சரிக்கைகளை தானியங்கு " "கருவிகள் தவிர்க்கலாம்." -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -32343,7 +32291,7 @@ msgstr "" "அமைப்புகளைக் கையாள, அந்த செய்தி `` `<கமிட்-ஆச்>` அல்லது ``@<குறிச்சொல்>#<கமிட்-ஆச்> `` " "குறியீட்டைப் பயன்படுத்தி முகவரி இன் முடிவில் சேர்க்கப்படலாம்." -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -32361,15 +32309,15 @@ msgstr "" "குறிச்சொல்லுடன் தீங்கிழைக்கும் ரெப்போவை உருவாக்குவது எளிதானது, ஒரு குறிப்பிட்ட *ஆச் *உடன் " "ஒன்றை உருவாக்குகிறது, குறைவாக)." -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "தொலைநிலை முகவரி எடுத்துக்காட்டுகள் ::" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "கோப்பு முகவரி கள்" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -32381,7 +32329,7 @@ msgstr "" "தவிர்க்கப்பட்டாலும் கூட மூன்றாவது சாய்வு இன்னும் இருக்க வேண்டும். `` `` `அணுக " "வேண்டிய கோப்பு முறைமையின் கோப்பு பாதை என்ன என்பதை வரையறுக்கிறது." -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -32393,7 +32341,7 @@ msgstr "" "அதன் சொந்த ஓச்டுடன் பொருந்துகிறது. வேறு வார்த்தைகளில் கூறுவதானால், `` கோப்பு: // `` " "திட்டத்தை உள்ளக கணினியில் பாதைகளை அணுக மட்டுமே பயன்படுத்த முடியும்." -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -32412,11 +32360,11 @@ msgstr "" "தொகுதி/கோப்பு`` என முடிவடையும். சாளரங்களில் `` கோப்பு: // `` urls பற்றிய கூடுதல் " "தகவலுக்கு `msdtn _ _ திட்டம்):" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "ஆகச்ட் 2014: இந்த விவரக்குறிப்பு அங்கீகரிக்கப்பட்டது: PEP: `440`." -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "பைதான் மெய்நிகர் சூழல்கள்" @@ -34296,10 +34248,21 @@ msgstr "" "பார்க்கவும்." #: ../source/tutorials/packaging-projects.rst:222 +#, fuzzy +#| msgid "" +#| "This is a valid :term:`SPDX license expression ` " +#| "consisting of one or more :term:`license identifiers `. The full license list is available at the `SPDX license " +#| "list page `_. The supported list version is 3.17 or any " +#| "later compatible one." msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" +"இது செல்லுபடியாகும்: சொல்: `SPDX உரிம வெளிப்பாடு <உரிம வெளிப்பாடு>` ஒன்று அல்லது " +"அதற்கு மேற்பட்டவற்றைக் கொண்டது: கால: `உரிம அடையாளங்காட்டிகள் <உரிம அடையாளங்காட்டி>`. " +"முழு உரிம பட்டியல் `SPDX உரிம பட்டியல் பக்கத்தில் ` _ இல் " +"கிடைக்கிறது. ஆதரிக்கப்பட்ட பட்டியல் பதிப்பு 3.17 அல்லது பின்னர் இணக்கமான ஒன்றாகும்." #: ../source/tutorials/packaging-projects.rst:224 #, fuzzy @@ -34350,12 +34313,21 @@ msgid "Creating a LICENSE" msgstr "உரிமத்தை உருவாக்குதல்" #: ../source/tutorials/packaging-projects.rst:253 -msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +#, fuzzy +#| msgid "" +#| "It's important for every package uploaded to the Python Package Index to " +#| "include a license. This tells users who install your package the terms " +#| "under which they can use your package. For help picking a license, see " +#| "https://choosealicense.com/. Once you have chosen a license, " +#| "open :file:`LICENSE` and enter the license text. For example, if you had " +#| "chosen the MIT license:" +msgid "" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" "பைதான் தொகுப்பு குறியீட்டில் பதிவேற்றப்பட்ட ஒவ்வொரு தொகுப்புக்கும் உரிமம் சேர்க்க வேண்டியது " "தேவை. உங்கள் தொகுப்பைப் பயன்படுத்தக்கூடிய விதிமுறைகளை உங்கள் தொகுப்பை நிறுவும் " @@ -34707,6 +34679,151 @@ msgstr "" "மட்டுமே தொடங்கினால், * வழக்கமான தொகுப்புகள் * மற்றும் `__init __. பை`` (கோப்பு " "காலியாக இருந்தாலும் கூட) ஒட்டிக்கொள்ள பரிந்துரைக்கப்படுகிறது." +#~ msgid "" +#~ "RECORD.jws is used for digital signatures. It is not mentioned in RECORD." +#~ msgstr "" +#~ "Record.JWS டிசிட்டல் கையொப்பங்களுக்கு பயன்படுத்தப்படுகிறது. இது பதிவில் " +#~ "குறிப்பிடப்படவில்லை." + +#~ msgid "" +#~ "RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/" +#~ "MIME signatures to secure their wheel files. It is not mentioned in " +#~ "RECORD." +#~ msgstr "" +#~ "S/MIME கையொப்பங்களை தங்கள் சக்கரக் கோப்புகளைப் பாதுகாக்க விரும்பும் எவருக்கும் " +#~ "மரியாதையாக Record.P7S அனுமதிக்கப்படுகிறது. இது பதிவில் குறிப்பிடப்படவில்லை." + +#~ msgid "Signed wheel files" +#~ msgstr "கையொப்பமிடப்பட்ட சக்கர கோப்புகள்" + +#~ msgid "" +#~ "Wheel files include an extended RECORD that enables digital signatures. " +#~ "PEP 376's RECORD is altered to include a secure hash " +#~ "``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding " +#~ "with no trailing = characters) as the second column instead of an " +#~ "md5sum. All possible entries are hashed, including any generated files " +#~ "such as .pyc files, but not RECORD which cannot contain its own hash. For " +#~ "example::" +#~ msgstr "" +#~ "சக்கர கோப்புகளில் டிசிட்டல் கையொப்பங்களை செயல்படுத்தும் நீட்டிக்கப்பட்ட பதிவு அடங்கும். " +#~ "ஒரு பாதுகாப்பான ஆச் `` டைசச்ட் பெயர் = urlsafe_b64encode_nopad (டைசச்ட்) `` `` " +#~ "(ட்ரெயில்ங் = எழுத்துக்கள் இல்லாத URLSAFE BASE64 குறியாக்கம்) ஒரு MD5SUM க்கு " +#~ "பதிலாக இரண்டாவது நெடுவரிசையாக சேர்க்க PEP 376 இன் பதிவு மாற்றப்பட்டுள்ளது. .Pyc " +#~ "கோப்புகள் போன்ற எந்தவொரு உருவாக்கப்பட்ட கோப்புகளும் உட்பட, சாத்தியமான அனைத்து " +#~ "உள்ளீடுகளும் ஆசெட் செய்யப்படுகின்றன, ஆனால் அதன் சொந்த ஆசைக் கொண்டிருக்க முடியாத பதிவு " +#~ "அல்ல. உதாரணமாக ::" + +#~ msgid "" +#~ "The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in " +#~ "RECORD at all since they can only be added after RECORD is generated. " +#~ "Every other file in the archive must have a correct hash in RECORD or the " +#~ "installation will fail." +#~ msgstr "" +#~ "கையொப்ப கோப்பு (கள்) பதிவு. JWS மற்றும் Record.P7 கள் பதிவில் குறிப்பிடப்படவில்லை, " +#~ "ஏனெனில் அவை பதிவு உருவாக்கப்பட்ட பின்னரே சேர்க்க முடியும். காப்பகத்தில் உள்ள மற்ற " +#~ "ஒவ்வொரு கோப்பிலும் பதிவில் சரியான ஆச் இருக்க வேண்டும் அல்லது நிறுவல் தோல்வியடையும்." + +#~ msgid "" +#~ "If JSON web signatures are used, one or more JSON Web Signature JSON " +#~ "Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent " +#~ "to RECORD. JWS is used to sign RECORD by including the SHA-256 hash of " +#~ "RECORD as the signature's JSON payload:" +#~ msgstr "" +#~ "சாதொபொகு வலை கையொப்பங்கள் பயன்படுத்தப்பட்டால், ஒன்று அல்லது அதற்கு மேற்பட்ட சாதொபொகு " +#~ "வலை கையொப்பம் சாதொபொகு சீரியலைசேசன் (JWS-JS) கையொப்பங்கள் ஒரு கோப்பு பதிவில் " +#~ "சேமிக்கப்படுகின்றன. பதிவுக்கு அருகிலுள்ள JWS. கையொப்பத்தின் சாதொபொகு பேலோடாக " +#~ "SHA-256 ஆச் பதிவின் மூலம் பதிவில் கையெழுத்திட JWS பயன்படுத்தப்படுகிறது:" + +#~ msgid "(The hash value is the same format used in RECORD.)" +#~ msgstr "(ஆச் மதிப்பு என்பது பதிவில் பயன்படுத்தப்படும் அதே வடிவமாகும்.)" + +#~ msgid "" +#~ "If RECORD.p7s is used, it must contain a detached S/MIME format signature " +#~ "of RECORD." +#~ msgstr "" +#~ "Record.P7S பயன்படுத்தப்பட்டால், அதில் பதிவின் பிரிக்கப்பட்ட S/MIME வடிவமைப்பு " +#~ "கையொப்பம் இருக்க வேண்டும்." + +#~ msgid "" +#~ "A wheel installer is not required to understand digital signatures but " +#~ "MUST verify the hashes in RECORD against the extracted file contents. " +#~ "When the installer checks file hashes against RECORD, a separate " +#~ "signature checker only needs to establish that RECORD matches the " +#~ "signature." +#~ msgstr "" +#~ "டிசிட்டல் கையொப்பங்களைப் புரிந்து கொள்ள ஒரு சக்கர நிறுவி தேவையில்லை, ஆனால் " +#~ "பிரித்தெடுக்கப்பட்ட கோப்பு உள்ளடக்கங்களுக்கு எதிராக பதிவில் உள்ள ஆச்களை சரிபார்க்க " +#~ "வேண்டும். நிறுவி கோப்பு ஆச்களை பதிவுக்கு எதிராக சரிபார்க்கும்போது, ஒரு தனி " +#~ "கையொப்பச் சரிபார்ப்பு கையொப்பத்துடன் பொருந்துகிறது என்பதை மட்டுமே நிறுவ வேண்டும்." + +#~ msgid "See" +#~ msgstr "பார்க்க" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7515" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7515" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" + +#~ msgid "https://datatracker.ietf.org/doc/html/rfc7517" +#~ msgstr "https://datatracker.ietf.org/doc/html/rfc7517" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" + +#~ msgid "Why does wheel include attached signatures?" +#~ msgstr "வீல் ஏன் இணைக்கப்பட்ட கையொப்பங்களை உள்ளடக்கியது?" + +#~ msgid "" +#~ "Attached signatures are more convenient than detached signatures because " +#~ "they travel with the archive. Since only the individual files are " +#~ "signed, the archive can be recompressed without invalidating the " +#~ "signature or individual files can be verified without having to download " +#~ "the whole archive." +#~ msgstr "" +#~ "இணைக்கப்பட்ட கையொப்பங்கள் பிரிக்கப்பட்ட கையொப்பங்களை விட வசதியானவை, ஏனெனில் அவை " +#~ "காப்பகத்துடன் பயணிக்கின்றன. தனிப்பட்ட கோப்புகள் மட்டுமே கையொப்பமிடப்பட்டதால், கையொப்பத்தை " +#~ "செல்லாததாக்காமல் காப்பகத்தை மறுசீரமைக்க முடியும் அல்லது முழு காப்பகத்தையும் பதிவிறக்கம் " +#~ "செய்யாமல் தனிப்பட்ட கோப்புகளை சரிபார்க்க முடியும்." + +#~ msgid "Why does wheel allow JWS signatures?" +#~ msgstr "JWS கையொப்பங்களை சக்கரம் ஏன் அனுமதிக்கிறது?" + +#~ msgid "" +#~ "The JOSE specifications of which JWS is a part are designed to be easy to " +#~ "implement, a feature that is also one of wheel's primary design goals. " +#~ "JWS yields a useful, concise pure-Python implementation." +#~ msgstr "" +#~ "சே.டபிள்யூ.எச் ஒரு பகுதியாக இருக்கும் சோச் விவரக்குறிப்புகள் நடைமுறைப்படுத்த " +#~ "எளிதானதாக வடிவமைக்கப்பட்டுள்ளன, இது சக்கரத்தின் முதன்மை வடிவமைப்பு இலக்குகளில் " +#~ "ஒன்றாகும். JWS ஒரு பயனுள்ள, சுருக்கமான தூய-பைதான் செயல்படுத்தலை அளிக்கிறது." + +#~ msgid "Why does wheel also allow S/MIME signatures?" +#~ msgstr "வீல் ஏன் எச்/மைம் கையொப்பங்களையும் அனுமதிக்கிறது?" + +#~ msgid "" +#~ "S/MIME signatures are allowed for users who need or want to use existing " +#~ "public key infrastructure with wheel." +#~ msgstr "" +#~ "தற்போதுள்ள பொது விசை உள்கட்டமைப்பை சக்கரத்துடன் பயன்படுத்த விரும்பும் அல்லது பயன்படுத்த " +#~ "விரும்பும் பயனர்களுக்கு எச்/மைம் கையொப்பங்கள் அனுமதிக்கப்படுகின்றன." + +#~ msgid "" +#~ "Signed packages are only a basic building block in a secure package " +#~ "update system. Wheel only provides the building block." +#~ msgstr "" +#~ "கையொப்பமிடப்பட்ட தொகுப்புகள் பாதுகாப்பான தொகுப்பு புதுப்பிப்பு அமைப்பில் ஒரு அடிப்படை " +#~ "கட்டுமானத் தொகுதி மட்டுமே. சக்கரம் கட்டுமானத் தொகுதியை மட்டுமே வழங்குகிறது." + +#~ msgid "The license expressions for these projects are:" +#~ msgstr "இந்த திட்டங்களுக்கான உரிம வெளிப்பாடுகள்:" + #~ msgid "TUF Support - PEP 458" #~ msgstr "TUF உதவி - PEP 458" diff --git a/locales/th/LC_MESSAGES/messages.po b/locales/th/LC_MESSAGES/messages.po index a68725bda..2e2bfa615 100644 --- a/locales/th/LC_MESSAGES/messages.po +++ b/locales/th/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -3405,9 +3405,9 @@ msgstr "" #: ../source/glossary.rst:161 msgid "" "A string with valid SPDX license expression syntax, including one or more " -"SPDX :term:`License Identifier`\\(s), which describes a :term:`Project`'s " -"license(s) and how they inter-relate. Examples: ``GPL-3.0-or-later``, ``MIT " -"AND (Apache-2.0 OR BSD-2-Clause)``" +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" msgstr "" #: ../source/glossary.rst:169 @@ -3580,54 +3580,54 @@ msgstr "" msgid "" "PyPA is a working group that maintains many of the relevant projects in " "Python packaging. They maintain a site at :doc:`pypa.io `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3635,11 +3635,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3648,11 +3648,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3660,26 +3660,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3691,38 +3691,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3731,21 +3731,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3754,11 +3754,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3766,15 +3766,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3782,21 +3782,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3949,7 +3949,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4305,7 +4305,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4627,7 +4627,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6686,11 +6686,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6726,7 +6727,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6739,29 +6741,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6773,65 +6775,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6840,18 +6842,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6860,11 +6862,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6874,7 +6876,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6883,11 +6885,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6899,24 +6901,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6924,17 +6926,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6945,11 +6947,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6957,14 +6959,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8740,7 +8742,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9356,40 +9358,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9397,25 +9403,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9423,45 +9429,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9472,31 +9478,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9900,7 +9906,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10005,90 +10011,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10097,26 +10103,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10124,28 +10130,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10153,33 +10159,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13230,86 +13236,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13318,116 +13320,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13437,51 +13368,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13489,7 +13380,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13497,18 +13388,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13517,7 +13408,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13528,7 +13419,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13546,7 +13437,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13555,7 +13446,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13569,24 +13460,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13594,24 +13485,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14365,11 +14260,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16201,17 +16096,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18219,7 +18120,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22271,7 +22172,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22310,7 +22211,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22530,14 +22431,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22571,7 +22472,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22579,45 +22480,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22625,7 +22526,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22634,23 +22535,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22659,14 +22560,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22676,7 +22577,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22684,14 +22585,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22701,45 +22602,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22748,7 +22649,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22758,17 +22659,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22776,7 +22677,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22785,11 +22686,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22797,11 +22698,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22864,11 +22765,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22877,65 +22778,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22943,7 +22844,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22954,7 +22855,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22963,33 +22864,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -22999,7 +22900,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23009,7 +22910,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23017,7 +22918,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23028,22 +22929,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23052,25 +22953,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23078,13 +22979,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23094,18 +22995,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23113,7 +23014,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23123,7 +23024,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23131,7 +23032,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23139,7 +23040,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23148,18 +23049,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23167,13 +23068,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23182,23 +23083,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23207,79 +23108,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24846,11 +24747,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24859,29 +24762,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24889,101 +24792,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -24991,29 +24894,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25025,7 +24928,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25034,14 +24937,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25050,7 +24953,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25058,7 +24961,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25069,15 +24972,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25085,7 +24988,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25093,7 +24996,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25105,43 +25008,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25150,29 +25053,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26538,7 +26445,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26577,11 +26484,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/tr/LC_MESSAGES/messages.po b/locales/tr/LC_MESSAGES/messages.po index 4c5ea9bb4..e7f7884ad 100644 --- a/locales/tr/LC_MESSAGES/messages.po +++ b/locales/tr/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-09-29 04:02+0000\n" "Last-Translator: Rüzgar Hünerel \n" "Language-Team: Turkish `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3662,11 +3662,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3675,11 +3675,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3687,26 +3687,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3718,38 +3718,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3758,21 +3758,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3781,11 +3781,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3793,15 +3793,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3809,21 +3809,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -3976,7 +3976,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4332,7 +4332,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4654,7 +4654,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6713,11 +6713,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6753,7 +6754,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6766,29 +6768,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6800,65 +6802,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6867,18 +6869,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6887,11 +6889,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6901,7 +6903,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6910,11 +6912,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6926,24 +6928,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -6951,17 +6953,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -6972,11 +6974,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -6984,14 +6986,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8767,7 +8769,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9383,40 +9385,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9424,25 +9430,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9450,45 +9456,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9499,31 +9505,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -9927,7 +9933,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10032,90 +10038,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10124,26 +10130,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10151,28 +10157,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10180,33 +10186,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13257,86 +13263,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13345,116 +13347,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13464,51 +13395,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13516,7 +13407,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13524,18 +13415,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13544,7 +13435,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13555,7 +13446,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13573,7 +13464,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13582,7 +13473,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13596,24 +13487,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13621,24 +13512,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14392,11 +14287,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16228,17 +16123,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18246,7 +18147,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22298,7 +22199,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22337,7 +22238,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22557,14 +22458,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22598,7 +22499,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22606,45 +22507,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22652,7 +22553,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22661,23 +22562,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22686,14 +22587,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22703,7 +22604,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22711,14 +22612,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22728,45 +22629,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22775,7 +22676,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22785,17 +22686,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22803,7 +22704,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22812,11 +22713,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -22824,11 +22725,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -22891,11 +22792,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22904,65 +22805,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -22970,7 +22871,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22981,7 +22882,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -22990,33 +22891,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23026,7 +22927,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23036,7 +22937,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23044,7 +22945,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23055,22 +22956,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23079,25 +22980,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23105,13 +23006,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23121,18 +23022,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23140,7 +23041,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23150,7 +23051,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23158,7 +23059,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23166,7 +23067,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23175,18 +23076,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23194,13 +23095,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23209,23 +23110,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23234,79 +23135,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -24873,11 +24774,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -24886,29 +24789,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -24916,101 +24819,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25018,29 +24921,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25052,7 +24955,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25061,14 +24964,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25077,7 +24980,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25085,7 +24988,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25096,15 +24999,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25112,7 +25015,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25120,7 +25023,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25132,43 +25035,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25177,29 +25080,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26565,7 +26472,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26604,11 +26511,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/uk/LC_MESSAGES/messages.po b/locales/uk/LC_MESSAGES/messages.po index 2dd92aaf9..26832af7c 100644 --- a/locales/uk/LC_MESSAGES/messages.po +++ b/locales/uk/LC_MESSAGES/messages.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2024-03-01 20:00+0000\n" "Last-Translator: Sviatoslav Sydorenko \n" "Language-Team: Ukrainian `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "Реєстр Python-пакунків (PyPI)" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "pypi.org" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "pyproject.toml" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "Випуск" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -4035,11 +4035,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -4048,11 +4048,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "Специфікатор вимоги" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -4060,28 +4060,28 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 #, fuzzy #| msgid "Project name" msgid "Root License Directory" msgstr "Назва проєкту" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -4093,38 +4093,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "setup.py" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "setup.cfg" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "Вихідний архів" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -4133,21 +4133,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "Специфікатор версії" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -4156,11 +4156,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -4168,17 +4168,17 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 #, fuzzy #| msgid "Format::" msgid "Wheel Format" msgstr "Формат::" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "Колесо" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -4186,23 +4186,23 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 #, fuzzy #| msgid "Project" msgid "Wheel Project" msgstr "Проєкт" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -4357,7 +4357,7 @@ msgstr "Опис" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "Приклади" @@ -4719,7 +4719,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -5047,7 +5047,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -7170,11 +7170,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -7214,7 +7215,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -7227,31 +7229,33 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 #, fuzzy #| msgid "For example:" msgid "Advanced example" msgstr "Наприклад:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" -msgstr "" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +#, fuzzy +#| msgid "Here are some examples of compliant version numbers::" +msgid "The appropriate license expressions are:" +msgstr "Ось кілька прикладів сумісних номерів версій::" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -7263,67 +7267,67 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 #, fuzzy #| msgid "For example:" msgid "Expression examples" msgstr "Наприклад:" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -7332,18 +7336,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -7352,11 +7356,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -7366,7 +7370,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -7375,11 +7379,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -7391,24 +7395,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -7416,17 +7420,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -7437,11 +7441,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7449,14 +7453,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -9250,7 +9254,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9868,42 +9872,46 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy #| msgid "Built Distribution" msgid "Building distributions" msgstr "Вбудований дистрибутив" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9911,27 +9919,27 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 #, fuzzy #| msgid "Using TestPyPI" msgid "Uploading to PyPI" msgstr "Використання TestPyPI" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9939,45 +9947,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9988,41 +9996,41 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 #, fuzzy #| msgid ":ref:`pip`" msgid ":ref:`Flit`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 #, fuzzy #| msgid "pip, :ref:`bandersnatch`" msgid ":ref:`Hatch`," msgstr "pip, :ref:`bandersnatch`" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 #, fuzzy #| msgid ":ref:`pip`" msgid ":ref:`PDM`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 #, fuzzy #| msgid ":ref:`pip`" msgid ":ref:`Pipenv`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 #, fuzzy #| msgid ":ref:`pip`" msgid ":ref:`Poetry`," msgstr ":ref:`pip`" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -10432,7 +10440,7 @@ msgid "``license`` and ``license-files``" msgstr "``license``" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10545,14 +10553,14 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 #, fuzzy @@ -10560,77 +10568,77 @@ msgstr "" msgid "``license-files``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "``classifiers``" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10639,26 +10647,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10666,28 +10674,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10695,35 +10703,35 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 #, fuzzy #| msgid "For example:" msgid "A full example" msgstr "Наприклад:" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13791,94 +13799,90 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 #, fuzzy #| msgid "Project name" msgid "Subdirectory name" msgstr "Назва проєкту" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 #, fuzzy #| msgid "``license``" msgid "``licenses``" msgstr "``license``" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 #, fuzzy #| msgid "``license``" msgid "``license_files``" msgstr "``license``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 #, fuzzy #| msgid "``LIB``" msgid "``LICENSES``" msgstr "``LIB``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13887,119 +13891,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -#, fuzzy -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" -"https://self-issued.info/docs/draft-jones-jose-jws-json-serialization.html" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -#, fuzzy -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "https://self-issued.info/docs/draft-jones-jose-json-private-key.html" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "ЧаПи" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -14009,51 +13939,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -14061,7 +13951,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -14069,18 +13959,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -14089,7 +13979,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -14100,7 +13990,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -14118,7 +14008,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -14127,7 +14017,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -14141,24 +14031,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -14166,24 +14056,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "Додаток" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14972,11 +14866,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16837,17 +16731,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18880,7 +18780,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 #, fuzzy #| msgid "Packaging tool recommendations" msgid "Recommendations" @@ -23018,7 +22918,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -23057,7 +22957,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -23278,14 +23178,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 #, fuzzy #| msgid "For example:" msgid "As an example:" @@ -23321,7 +23221,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -23329,45 +23229,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -23375,7 +23275,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -23384,23 +23284,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -23409,14 +23309,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -23426,7 +23326,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -23434,14 +23334,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -23451,45 +23351,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -23498,7 +23398,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -23508,17 +23408,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -23526,7 +23426,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -23535,11 +23435,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -23547,11 +23447,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -23616,13 +23516,13 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 #, fuzzy #| msgid "Version" msgid "Version + Format Selection" msgstr "Version" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -23631,65 +23531,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23697,7 +23597,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23708,7 +23608,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23717,33 +23617,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23753,7 +23653,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23763,7 +23663,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23771,7 +23671,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23782,22 +23682,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23806,25 +23706,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23832,13 +23732,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23848,18 +23748,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23867,7 +23767,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23877,7 +23777,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23885,7 +23785,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23893,7 +23793,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23902,18 +23802,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23921,13 +23821,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23936,23 +23836,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23961,79 +23861,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -25632,11 +25532,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -25645,29 +25547,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -25675,101 +25577,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25777,29 +25679,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25811,7 +25713,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25820,14 +25722,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25836,7 +25738,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25844,7 +25746,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25855,17 +25757,17 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 #, fuzzy #| msgid "For example::" msgid "Remote URL examples::" msgstr "Наприклад::" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25873,7 +25775,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25881,7 +25783,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25893,43 +25795,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25938,29 +25840,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -27342,7 +27248,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -27381,11 +27287,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 @@ -27661,6 +27568,19 @@ msgid "" "the file is empty)." msgstr "" +#, fuzzy +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" +#~ msgstr "" +#~ "https://self-issued.info/docs/draft-jones-jose-jws-json-serialization.html" + +#, fuzzy +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" +#~ msgstr "" +#~ "https://self-issued.info/docs/draft-jones-jose-json-private-key.html" + #~ msgid "`Vagrant `_" #~ msgstr "`Vagrant `_" diff --git a/locales/vi/LC_MESSAGES/messages.po b/locales/vi/LC_MESSAGES/messages.po index 6c5c000a4..d75682bfe 100644 --- a/locales/vi/LC_MESSAGES/messages.po +++ b/locales/vi/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-09-23 05:02+0000\n" "Last-Translator: Lenny Tran \n" "Language-Team: Vietnamese `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3782,11 +3782,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3795,11 +3795,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3807,26 +3807,26 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3838,38 +3838,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3878,21 +3878,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3901,11 +3901,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3913,15 +3913,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3929,21 +3929,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -4096,7 +4096,7 @@ msgstr "" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "" @@ -4452,7 +4452,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "" @@ -4774,7 +4774,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6833,11 +6833,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6873,7 +6874,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6886,29 +6888,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6920,65 +6922,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6987,18 +6989,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -7007,11 +7009,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -7021,7 +7023,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -7030,11 +7032,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -7046,24 +7048,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -7071,17 +7073,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -7092,11 +7094,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7104,14 +7106,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8887,7 +8889,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9503,40 +9505,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9544,25 +9550,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9570,45 +9576,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9619,31 +9625,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr "" -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr "" -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr "" -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr "" -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr "" -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -10047,7 +10053,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10164,12 +10170,19 @@ msgstr "" "phần mềm có giấy phép không được chấp thuận." #: ../source/guides/writing-pyproject-toml.rst:353 -msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +#, fuzzy +#| msgid "" +#| "If your project is licensed with a license that doesn't have an existing " +#| "SPDX identifier, you can create a custom one in format ``LicenseRef-" +#| "[idstring]``. The custom identifiers must follow the SPDX specification, " +#| "`clause 10.1 `_ of the version 2.2 or any later " +#| "compatible one." +msgid "" +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" "Nếu dự án của bạn được cấp phép theo giấy phép chưa có mã định danh SPDX, " "bạn có thể tạo mã định danh tùy chỉnh theo định dạng ``LicenseRef-" @@ -10177,13 +10190,13 @@ msgstr "" "10.1 ``_ của phiên bản 2.2 hoặc bất kỳ phiên bản tương thích " "nào mới hơn." -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "``license-files`` (các tệp giấy phép)" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." @@ -10191,11 +10204,11 @@ msgstr "" "Đây là danh sách các tệp giấy phép và tệp chứa thông tin pháp lý khác mà bạn " "muốn phân phối cùng với gói của bạn." -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "Các mẫu glob phải tuân theo đặc tả sau:" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." @@ -10203,18 +10216,18 @@ msgstr "" "Các ký tự chữ và số, dấu gạch dưới (``_``), dấu gạch nối (``-``) và dấu chấm " "(``.``) sẽ được khớp nguyên văn." -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" "Các ký tự đặc biệt: ``*``, ``?``, ``**`` và phạm vi ký tự: [] được hỗ trợ." -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "Dấu phân cách đường dẫn phải là ký tự gạch chéo (``/``)." -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." @@ -10222,15 +10235,15 @@ msgstr "" "Các mẫu liên quan đến thư mục chứa :file:`pyproject.toml` và do đó không " "được bắt đầu bằng ký tự gạch chéo." -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "Không được sử dụng chỉ báo thư mục cha (``..``)." -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "Mỗi glob phải khớp với ít nhất một tệp." -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." @@ -10238,13 +10251,13 @@ msgstr "" "Đường dẫn theo nghĩa đen là các glob hợp lệ. Bất kỳ ký tự hoặc chuỗi ký tự " "nào không được đề cập trong đặc tả này đều không hợp lệ." -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "``keywords`` (các từ khóa)" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -10252,13 +10265,13 @@ msgstr "" "Điều này sẽ giúp hộp tìm kiếm của PyPI gợi ý dự án của bạn khi mọi người tìm " "kiếm các từ khóa này." -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "``classifiers`` (bộ phân loại)" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -10266,7 +10279,7 @@ msgstr "" "Danh sách các bộ phân loại PyPI áp dụng cho dự án của bạn. Kiểm tra trong " "`full list of possibilities `_." -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10280,7 +10293,7 @@ msgstr "" "chế các phiên bản Python mà một dự án có thể được cài đặt, hãy sử dụng đối " "số :ref:`requires-python`." -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " @@ -10290,13 +10303,13 @@ msgstr "" "``Private :: Do Not Upload``. PyPI sẽ luôn từ chối các gói có trình phân " "loại bắt đầu bằng ``Private ::``." -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "``urls`` (các đường dẫn)" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -10304,7 +10317,7 @@ msgstr "" "Danh sách các URL liên quan đến dự án của bạn, được hiển thị ở thanh bên " "trái của trang dự án PyPI." -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10316,7 +10329,7 @@ msgstr "" "`_ để biết cách xử lý " "URL cụ thể của PyPI." -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" @@ -10326,7 +10339,7 @@ msgstr "" "``Website = \"https://example.com\"`` nhưng ``\"Trang web chính thức\" = " "\"https://example.com\"``." -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " @@ -10336,7 +10349,7 @@ msgstr "" "của họ khi thích hợp, vì siêu dữ liệu người dùng (như chỉ mục gói) có thể " "chuyên biệt hóa cách trình bày của họ." -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " @@ -10345,7 +10358,7 @@ msgstr "" "Ví dụ, trong siêu dữ liệu sau, ``MyHomepage`` và ``\"Download Link\"`` không " "phải là nhãn được biết đến rộng rãi, do đó chúng sẽ được hiển thị nguyên văn:" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10357,11 +10370,11 @@ msgstr "" "trình bày theo ngữ nghĩa đó (lần lượt là trang chủ của dự án và vị trí tải " "xuống bên ngoài)." -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "Các plugin nâng cao" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " @@ -10371,15 +10384,15 @@ msgstr "" "Pygments_. Để tạo một plugin như vậy, bạn cần khai báo nó trong một bảng con " "của ``[project.entry-points]`` như sau:" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "Xem :ref:`Plugin guide ` để biết thêm thông tin" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "Một ví dụ đầy đủ" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -10389,7 +10402,7 @@ msgstr "" "= \"<= 3.10\"`` ở đây. `This blog post `_ chứa " "một số thông tin liên quan đến các vấn đề có thể xảy ra." -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13442,86 +13455,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13530,116 +13539,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13649,51 +13587,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13701,7 +13599,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13709,18 +13607,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13729,7 +13627,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13740,7 +13638,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13758,7 +13656,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13767,7 +13665,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13781,24 +13679,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13806,24 +13704,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14577,11 +14479,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16413,17 +16315,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18431,7 +18339,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22487,7 +22395,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22526,7 +22434,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22746,14 +22654,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22787,7 +22695,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22795,45 +22703,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22841,7 +22749,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22850,23 +22758,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22875,14 +22783,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22892,7 +22800,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22900,14 +22808,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22917,45 +22825,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22964,7 +22872,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22974,17 +22882,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22992,7 +22900,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -23001,11 +22909,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -23013,11 +22921,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -23080,11 +22988,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -23093,65 +23001,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23159,7 +23067,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23170,7 +23078,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23179,33 +23087,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23215,7 +23123,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23225,7 +23133,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23233,7 +23141,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23244,22 +23152,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23268,25 +23176,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23294,13 +23202,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23310,18 +23218,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23329,7 +23237,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23339,7 +23247,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23347,7 +23255,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23355,7 +23263,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23364,18 +23272,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23383,13 +23291,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23398,23 +23306,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23423,79 +23331,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -25062,11 +24970,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -25075,29 +24985,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -25105,101 +25015,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25207,29 +25117,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25241,7 +25151,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25250,14 +25160,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25266,7 +25176,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25274,7 +25184,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25285,15 +25195,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25301,7 +25211,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25309,7 +25219,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25321,43 +25231,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25366,29 +25276,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26754,7 +26668,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26793,11 +26707,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 diff --git a/locales/zh_Hans/LC_MESSAGES/messages.po b/locales/zh_Hans/LC_MESSAGES/messages.po index e48e3277d..faccc3cad 100644 --- a/locales/zh_Hans/LC_MESSAGES/messages.po +++ b/locales/zh_Hans/LC_MESSAGES/messages.po @@ -24,7 +24,7 @@ # Eric , 2023, 2024. # Autuamn End , 2023. # Thomas , 2023, 2024. -# 大王叫我来巡山 , 2024, 2025. +# 大王叫我来巡山 , 2024, 2025, 2026. # Peter Shen , 2024. # hello_wac , 2024. # Xianpeng Shen , 2024. @@ -41,8 +41,8 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" -"PO-Revision-Date: 2025-11-22 12:58+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" +"PO-Revision-Date: 2026-01-01 01:01+0000\n" "Last-Translator: 大王叫我来巡山 " "\n" "Language-Team: Chinese (Simplified Han script) `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" "PyPA 是一个工作组,维护 Python 打包的许多重要项目。他们维护 :doc:`pypa.io " -"` 站点,在`GitHub `_ 和`Bitbucket " -"`_ 上托管项目,并在 `distutils-sig 邮件列表 " -"`_ 和 " -"`Python Discourse 论坛 `__ 上讨论问" -"题。" +"` 站点,在`GitHub `_ 上托管项目,并在 " +"`distutils-sig 邮件列表 `_ 和 `Python Discourse 论坛 `__ 上讨论问题。" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "Python 包索引 (PyPI)" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " @@ -4266,11 +4265,11 @@ msgstr "" "`PyPI `_ 是 Python 社区的默认 :term:`Package Index` 。所有 " "Python 开发人员都可以使用和分发他们的发行版。" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "pypi.org" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " @@ -4280,26 +4279,26 @@ msgstr "" "名。它在2017年取代了旧的索引域名, ``pypi.python.org`` ,并" "由 :ref:`warehouse` 提供支持。" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "pyproject.toml" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "发行版 (Release)" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -4307,11 +4306,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "要求 (Requirement)" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -4320,11 +4319,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "需求说明符" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -4332,11 +4331,11 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "需求文件" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " @@ -4346,15 +4345,15 @@ msgstr "" "使用 :ref:`pip` 来安装。更多信息,请参阅 :ref:`pip` 文档" "的 :ref:`pip:Requirements Files` 。" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 msgid "Root License Directory" msgstr "根许可证目录" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -4366,17 +4365,17 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "setup.py" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "setup.cfg" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." @@ -4384,22 +4383,22 @@ msgstr "" ":ref:`distutils` 和 :ref:`setuptools` 的项目规范文件。另" "见 :term:`pyproject.toml`。" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "源代码归档" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "源代码分发(或“sdist”)" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -4408,21 +4407,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "系统包 (System Package)" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "以操作系统本地格式提供的软件包,例如 rpm 或 dpkg 文件。" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "版本说明符 (Version Specifier)" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -4431,11 +4430,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "虚拟环境 (Virtual Environment)" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -4445,15 +4444,15 @@ msgstr "" "一个隔离的 Python 环境,允许安装软件包以供特定的应用程序使用,而不是在系统中" "安装。更多信息,请参见章节 :ref:`Creating and using Virtual Environments`." -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "Wheel" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -4461,21 +4460,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "Wheel 项目" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "工作集 (Working Set)" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -4648,7 +4647,7 @@ msgstr "描述" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "例子" @@ -5016,7 +5015,7 @@ msgid "" msgstr "`pandas-gbq`_ 项目允许通过 `Pandas`_ 来访问查询结果。" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "参考" @@ -5361,7 +5360,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -7539,11 +7538,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -7579,7 +7579,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -7592,29 +7593,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "高级示例" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -7626,65 +7627,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "表达式示例" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -7693,18 +7694,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -7713,11 +7714,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -7727,7 +7728,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -7736,11 +7737,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -7752,24 +7753,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -7777,17 +7778,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -7798,11 +7799,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7810,14 +7811,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -9407,10 +9408,8 @@ msgstr "" "workflows/`` 目录下。" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:90 -#, fuzzy -#| msgid "Let's create a ``.github/workflows/publish-to-test-pypi.yml`` file." msgid "Let's create a ``.github/workflows/publish-to-pypi.yml`` file." -msgstr "让我们创建一个 ``.github/workflows/publish-to-test-pypi.yml`` 文件。" +msgstr "让我们创建一个 ``.github/workflows/publish-to-pypi.yml`` 文件。" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:93 msgid "" @@ -9625,11 +9624,11 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" -"`Travis CI `_ 提供了一个 Linux 和一个 macOS 环境。" +"`Travis CI `_ 提供了一个 Linux 和一个 macOS 环境。" "Linux 环境是 Ubuntu 12.04 LTS 服务器版 64 位,而在撰写本文时 macOS 的版本是 " "10.9.2。" @@ -10248,40 +10247,44 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 msgid "Building distributions" msgstr "构建发行版" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -10289,25 +10292,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "上传到 PyPI" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -10315,45 +10318,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -10364,31 +10367,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr ":ref:`Flit`," -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr ":ref:`Hatch`," -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr ":ref:`PDM`," -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr ":ref:`Pipenv`," -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr ":ref:`Poetry`," -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -10800,7 +10803,7 @@ msgid "``license`` and ``license-files``" msgstr "``许可证`` 和 ``许可证文件``" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10905,84 +10908,84 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "``license-files``" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "``classifiers``" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -10990,7 +10993,7 @@ msgstr "" "应用到你的项目的 PyPI 分类器列表。查看 `full list of possibilities " "`_ 。" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10999,26 +11002,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -11026,28 +11029,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -11055,33 +11058,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "完整示例" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -14264,86 +14267,82 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "Subdirectory name" msgstr "子目录名称" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 msgid "``licenses``" msgstr "``licenses``" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "``license_files``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "``LICENSES``" msgstr "``LICENSES``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr ":file:`.dist-info/licenses/` 目录" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -14352,119 +14351,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr ":file:`.dist-info/sboms/` 目录" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr ".data 目录" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "见" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -14474,51 +14399,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -14526,7 +14411,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -14534,18 +14419,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -14554,7 +14439,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -14565,7 +14450,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -14583,7 +14468,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -14592,7 +14477,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -14606,24 +14491,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -14631,24 +14516,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -15402,11 +15291,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -17241,17 +17130,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -19262,7 +19157,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "建议" @@ -23314,7 +23209,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -23353,7 +23248,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -23573,14 +23468,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "示例:" @@ -23614,7 +23509,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -23622,45 +23517,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -23668,7 +23563,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -23677,23 +23572,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -23702,14 +23597,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -23719,7 +23614,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -23727,14 +23622,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -23744,45 +23639,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -23791,7 +23686,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -23801,17 +23696,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -23819,7 +23714,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -23828,11 +23723,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -23840,11 +23735,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -23907,11 +23802,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 msgid "Version + Format Selection" msgstr "版本+格式选择" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -23920,65 +23815,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23986,7 +23881,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23997,7 +23892,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -24006,33 +23901,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "``$type/$subtype``" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "``$type/*``" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "``*/*``" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -24042,7 +23937,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -24052,7 +23947,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -24060,7 +23955,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -24071,22 +23966,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -24095,25 +23990,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -24121,13 +24016,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -24137,18 +24032,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -24156,7 +24051,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -24166,7 +24061,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -24174,7 +24069,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -24182,7 +24077,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -24191,18 +24086,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -24210,13 +24105,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -24225,23 +24120,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -24250,79 +24145,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -25889,11 +25784,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -25902,29 +25799,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -25932,84 +25829,84 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "``~=3.1.2``: 3.1.2 或更高版本,但不包括 3.2.0 或更高版本。" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." @@ -26017,18 +25914,18 @@ msgstr "" "``~=3.1.0, != 3.1.3``:3.1.0 或更高版本,但不是 3.1.3 版,也不是 3.2.0 或更高" "版本。" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "直接引用" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -26036,29 +25933,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -26070,7 +25967,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -26079,14 +25976,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -26095,7 +25992,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -26103,7 +26000,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -26114,15 +26011,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "远程 URL 示例::" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -26130,7 +26027,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -26138,7 +26035,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -26150,43 +26047,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -26195,29 +26092,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "Python 虚拟环境" @@ -27587,7 +27488,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -27626,11 +27527,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 @@ -27888,6 +27790,21 @@ msgid "" "the file is empty)." msgstr "" +#~ msgid "See" +#~ msgstr "见" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" + +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" +#~ msgstr "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" + #~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" #~ msgstr "**灵感**: :ref:` pyproject-tool-table`" diff --git a/locales/zh_Hant/LC_MESSAGES/messages.po b/locales/zh_Hant/LC_MESSAGES/messages.po index 82bbf0bc7..9709cff4c 100644 --- a/locales/zh_Hant/LC_MESSAGES/messages.po +++ b/locales/zh_Hant/LC_MESSAGES/messages.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-24 00:10+0000\n" +"POT-Creation-Date: 2026-02-04 00:18+0000\n" "PO-Revision-Date: 2025-02-24 15:37+0000\n" "Last-Translator: toto6038 \n" "Language-Team: Chinese (Traditional Han script) `, host " -"projects on `GitHub `_ and `Bitbucket `_, and discuss issues on the `distutils-sig mailing list " -"`_ and " -"`the Python Discourse forum `__." +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." msgstr "" -#: ../source/glossary.rst:296 +#: ../source/glossary.rst:295 msgid "Python Package Index (PyPI)" msgstr "" -#: ../source/glossary.rst:299 +#: ../source/glossary.rst:298 msgid "" "`PyPI `_ is the default :term:`Package Index` for the " "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -#: ../source/glossary.rst:302 +#: ../source/glossary.rst:301 msgid "pypi.org" msgstr "pypi.org" -#: ../source/glossary.rst:305 +#: ../source/glossary.rst:304 msgid "" "`pypi.org `_ is the domain name for the :term:`Python " "Package Index (PyPI)`. It replaced the legacy index domain name, " "``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." msgstr "" -#: ../source/glossary.rst:309 +#: ../source/glossary.rst:308 msgid "pyproject.toml" msgstr "pyproject.toml" -#: ../source/glossary.rst:312 +#: ../source/glossary.rst:311 msgid "" "The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." msgstr "" -#: ../source/glossary.rst:314 +#: ../source/glossary.rst:313 msgid "Release" msgstr "發行版本" -#: ../source/glossary.rst:317 +#: ../source/glossary.rst:316 msgid "" "A snapshot of a :term:`Project` at a particular point in time, denoted by a " "version identifier." msgstr "" -#: ../source/glossary.rst:320 +#: ../source/glossary.rst:319 msgid "" "Making a release may entail the publishing of multiple :term:`Distributions " "`. For example, if version 1.0 of a project was " @@ -3695,11 +3695,11 @@ msgid "" "Windows installer distribution format." msgstr "" -#: ../source/glossary.rst:325 +#: ../source/glossary.rst:324 msgid "Requirement" msgstr "要求" -#: ../source/glossary.rst:328 +#: ../source/glossary.rst:327 msgid "" "A specification for a :term:`package ` to be " "installed. :ref:`pip`, the :term:`PYPA ` " @@ -3708,11 +3708,11 @@ msgid "" "install` reference." msgstr "" -#: ../source/glossary.rst:334 +#: ../source/glossary.rst:333 msgid "Requirement Specifier" msgstr "" -#: ../source/glossary.rst:337 +#: ../source/glossary.rst:336 msgid "" "A format used by :ref:`pip` to install packages from a :term:`Package " "Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " @@ -3720,28 +3720,28 @@ msgid "" "project name, and the \">=1.3\" portion is the :term:`Version Specifier`" msgstr "" -#: ../source/glossary.rst:342 +#: ../source/glossary.rst:341 msgid "Requirements File" msgstr "" -#: ../source/glossary.rst:345 +#: ../source/glossary.rst:344 msgid "" "A file containing a list of :term:`Requirements ` that can be " "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -#: ../source/glossary.rst:349 +#: ../source/glossary.rst:348 #, fuzzy #| msgid "Project name" msgid "Root License Directory" msgstr "專案名稱" -#: ../source/glossary.rst:350 +#: ../source/glossary.rst:349 msgid "License Directory" msgstr "" -#: ../source/glossary.rst:353 +#: ../source/glossary.rst:352 msgid "" "The directory under which license files are stored in a :term:`Project " "Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " @@ -3753,38 +3753,38 @@ msgid "" "Metadata Field` are relative to." msgstr "" -#: ../source/glossary.rst:366 +#: ../source/glossary.rst:365 #: ../source/guides/distributing-packages-using-setuptools.rst:59 msgid "setup.py" msgstr "setup.py" -#: ../source/glossary.rst:367 +#: ../source/glossary.rst:366 #: ../source/guides/distributing-packages-using-setuptools.rst:80 msgid "setup.cfg" msgstr "setup.cfg" -#: ../source/glossary.rst:370 +#: ../source/glossary.rst:369 msgid "" "The project specification files for :ref:`distutils` and :ref:`setuptools`. " "See also :term:`pyproject.toml`." msgstr "" -#: ../source/glossary.rst:373 +#: ../source/glossary.rst:372 msgid "Source Archive" msgstr "" -#: ../source/glossary.rst:376 +#: ../source/glossary.rst:375 msgid "" "An archive containing the raw source code for a :term:`Release`, prior to " "creation of a :term:`Source Distribution ` or :term:`Built Distribution`." msgstr "" -#: ../source/glossary.rst:380 +#: ../source/glossary.rst:379 msgid "Source Distribution (or \"sdist\")" msgstr "" -#: ../source/glossary.rst:383 +#: ../source/glossary.rst:382 msgid "" "A :term:`distribution ` format (usually generated " "using ``python -m build --sdist``) that provides metadata and the essential " @@ -3793,21 +3793,21 @@ msgid "" "information." msgstr "" -#: ../source/glossary.rst:389 +#: ../source/glossary.rst:388 msgid "System Package" msgstr "" -#: ../source/glossary.rst:392 +#: ../source/glossary.rst:391 msgid "" "A package provided in a format native to the operating system, e.g. an rpm " "or dpkg file." msgstr "" -#: ../source/glossary.rst:395 +#: ../source/glossary.rst:394 msgid "Version Specifier" msgstr "" -#: ../source/glossary.rst:398 +#: ../source/glossary.rst:397 msgid "" "The version component of a :term:`Requirement Specifier`. For example, the " "\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " @@ -3816,11 +3816,11 @@ msgid "" "was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." msgstr "" -#: ../source/glossary.rst:403 +#: ../source/glossary.rst:402 msgid "Virtual Environment" msgstr "" -#: ../source/glossary.rst:406 +#: ../source/glossary.rst:405 msgid "" "An isolated Python environment that allows packages to be installed for use " "by a particular application, rather than being installed system wide. For " @@ -3828,15 +3828,15 @@ msgid "" "Environments`." msgstr "" -#: ../source/glossary.rst:411 +#: ../source/glossary.rst:410 msgid "Wheel Format" msgstr "" -#: ../source/glossary.rst:412 +#: ../source/glossary.rst:411 msgid "Wheel" msgstr "" -#: ../source/glossary.rst:415 +#: ../source/glossary.rst:414 msgid "" "The standard :term:`Built Distribution` format originally introduced " "in :pep:`427` and defined by the :ref:`binary-distribution-format` " @@ -3844,21 +3844,21 @@ msgid "" "confused with its reference implementation, the :term:`Wheel Project`." msgstr "" -#: ../source/glossary.rst:422 +#: ../source/glossary.rst:421 msgid "Wheel Project" msgstr "" -#: ../source/glossary.rst:425 +#: ../source/glossary.rst:424 msgid "" "The PyPA reference implementation of the :term:`Wheel Format`; " "see :ref:`wheel`." msgstr "" -#: ../source/glossary.rst:427 +#: ../source/glossary.rst:426 msgid "Working Set" msgstr "" -#: ../source/glossary.rst:430 +#: ../source/glossary.rst:429 msgid "" "A collection of :term:`distributions ` available for " "importing. These are the distributions that are on the `sys.path` variable. " @@ -4011,7 +4011,7 @@ msgstr "描述" #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 #: ../source/specifications/direct-url-data-structure.rst:242 -#: ../source/specifications/version-specifiers.rst:1072 +#: ../source/specifications/version-specifiers.rst:1073 msgid "Examples" msgstr "例子" @@ -4367,7 +4367,7 @@ msgid "" msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:337 -#: ../source/specifications/dependency-specifiers.rst:535 +#: ../source/specifications/dependency-specifiers.rst:537 msgid "References" msgstr "參考" @@ -4695,7 +4695,7 @@ msgstr "" msgid "" "This syntax is a bit impractical, however; as the name of the entry point we " "defined above does not match the package name, we need to state explicitly " -"which executable script to run (even though there is only on in existence)." +"which executable script to run (even though there is only one in existence)." msgstr "" #: ../source/guides/creating-command-line-tools.rst:159 @@ -6784,11 +6784,12 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" -":pep:`639` has specified the way to declare a project's license and paths to " -"license files and other legally required information. This document aims to " -"provide clear guidance how to migrate from the legacy to the standardized " -"way of declaring licenses. Make sure your preferred build backend " -"supports :pep:`639` before trying to apply the newer guidelines." +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 @@ -6826,7 +6827,8 @@ msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:56 -msgid "The output Core Metadata for the distribution packages would then be:" +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 @@ -6839,29 +6841,29 @@ msgid "" "in the Core Metadata." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:73 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 msgid "Advanced example" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:75 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 msgid "" "Suppose Setuptools were to include the licenses of the third-party projects " "that are vendored in the :file:`setuptools/_vendor/` " "and :file:`pkg_resources/_vendor/` directories; specifically:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -msgid "The license expressions for these projects are:" +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:95 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 msgid "" "A comprehensive license expression covering both Setuptools proper and its " "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:103 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 msgid "" "In addition, per the requirements of the licenses, the relevant license " "files must be included in the package. Suppose the :file:`LICENSE` file " @@ -6873,65 +6875,65 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:111 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 msgid "" "Specifically, we assume the license files are located at the following paths " "in the project source tree (relative to the project root " "and :file:`pyproject.toml`):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:122 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:133 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:147 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 msgid "If our project used :file:`setup.cfg`, we could define this in :" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:159 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 msgid "" "With either approach, the output Core Metadata in the distribution would be:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:170 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 msgid "" "In the resulting sdist, with :file:`/` as the root of the archive and " "``{VERSION}`` the version of the Setuptools release specified in the Core " "Metadata, the license files would be located at the paths:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:181 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 msgid "" "In the built wheel, with :file:`/` being the root of the archive and " "``{VERSION}`` as the previous, the license files would be stored at:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:191 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 msgid "" "Finally, in the installed project, with :file:`site-packages/` being the " "site dir and ``{VERSION}`` as the previous, the license files would be " "installed to:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:203 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 msgid "Expression examples" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:205 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 msgid "Some additional examples of valid ``License-Expression`` values:" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:220 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 msgid "User Scenarios" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:222 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 msgid "" "The following covers the range of common use cases from a user perspective, " "providing guidance for each. Do note that the following should **not** be " @@ -6940,18 +6942,18 @@ msgid "" "for their situation." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:230 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 msgid "I have a private package that won't be distributed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:232 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 msgid "" "If your package isn't shared publicly, i.e. outside your company, " "organization or household, it *usually* isn't strictly necessary to include " "a formal license, so you wouldn't necessarily have to do anything extra here." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:236 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 msgid "" "However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " "license expression in your package configuration, and/or a copyright " @@ -6960,11 +6962,11 @@ msgid "" "tools." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:244 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 msgid "I just want to share my own work without legal restrictions" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:246 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 msgid "" "While you aren't required to include a license, if you don't, no one has " "`any permission to download, use or improve your work " @@ -6974,7 +6976,7 @@ msgid "" "want with your work (other than sue you, which you probably also don't want)." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:253 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 msgid "" "To apply it, just paste `the text `__ into a file " "named :file:`LICENSE.txt` at the root of your repo, and add the year and " @@ -6983,11 +6985,11 @@ msgid "" "it, or in its config file/section. You're done!" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:261 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 msgid "I want to distribute my project under a specific license" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:263 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 msgid "" "To use a particular license, simply paste its text into " "a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " @@ -6999,24 +7001,24 @@ msgid "" "`__." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:272 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 msgid "" "Many popular code hosts, project templates and packaging tools can add the " "license file for you, and may support the expression as well in the future." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:277 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 msgid "I maintain an existing package that's already licensed" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:279 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 msgid "" "If you already have license files and metadata in your project, you should " "only need to make a couple of tweaks to take advantage of the new " "functionality." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:283 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 msgid "" "In your project config file, enter your license expression under ``license`` " "(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " @@ -7024,17 +7026,17 @@ msgid "" "or ``License ::`` classifiers. Your existing ``license`` value may already " "be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " "otherwise, check the `SPDX license list `__ for the identifier " -"that matches the license used in your project." +"that matches the license used." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:292 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 msgid "" "Make sure to list your license files under ``license-files`` under " "``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " "file." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:296 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 msgid "" "See the :ref:`licensing-example-basic` for a simple but complete real-world " "demo of how this works in practice. See also the best-effort guidance on how " @@ -7045,11 +7047,11 @@ msgid "" "more information." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:306 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 msgid "My package includes other code under different licenses" msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:308 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 msgid "" "If your project includes code from others covered by different licenses, " "such as vendored dependencies or files copied from other open source " @@ -7057,14 +7059,14 @@ msgid "" "involved and the relationship between them." msgstr "" -#: ../source/guides/licensing-examples-and-user-scenarios.rst:314 +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 msgid "" -"In short, ``License-1 AND License-2`` mean that *both* licenses apply to " -"your project, or parts of it (for example, you included a file under another " -"license), and ``License-1 OR License-2`` means that *either* of the licenses " -"can be used, at the user's option (for example, you want to allow users a " -"choice of multiple licenses). You can use parenthesis (``()``) for grouping " -"to form expressions that cover even the most complex situations." +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:322 @@ -8844,7 +8846,7 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " +"`Travis CI `_ provides both a Linux and a macOS " "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " "while the macOS is 10.9.2 at the time of writing." msgstr "" @@ -9462,42 +9464,46 @@ msgid "" "available from setuptools." msgstr "" -#: ../source/guides/tool-recommendations.rst:112 +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 msgid "" "For packages with :term:`extension modules `, it is best " "to use a build system with dedicated support for the language the extension " "is written in, for example:" msgstr "" -#: ../source/guides/tool-recommendations.rst:116 +#: ../source/guides/tool-recommendations.rst:121 msgid "" ":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " "for Go and Rust)," msgstr "" -#: ../source/guides/tool-recommendations.rst:117 +#: ../source/guides/tool-recommendations.rst:122 msgid "" ":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " "by Meson," msgstr "" -#: ../source/guides/tool-recommendations.rst:118 +#: ../source/guides/tool-recommendations.rst:123 msgid "" ":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " "by CMake," msgstr "" -#: ../source/guides/tool-recommendations.rst:119 +#: ../source/guides/tool-recommendations.rst:124 msgid ":ref:`maturin` -- Rust, via Cargo." msgstr "" -#: ../source/guides/tool-recommendations.rst:123 +#: ../source/guides/tool-recommendations.rst:128 #, fuzzy #| msgid "Reviewing new contributions" msgid "Building distributions" msgstr "審查新的貢獻" -#: ../source/guides/tool-recommendations.rst:125 +#: ../source/guides/tool-recommendations.rst:130 msgid "" "The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " @@ -9505,25 +9511,25 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" -#: ../source/guides/tool-recommendations.rst:130 +#: ../source/guides/tool-recommendations.rst:135 msgid "" "Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " "for this task. All direct invocations of :file:`setup.py` " "are :ref:`deprecated `." msgstr "" -#: ../source/guides/tool-recommendations.rst:134 +#: ../source/guides/tool-recommendations.rst:139 msgid "" "If you have :term:`extension modules ` and want to " "distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " "your CI setup to build distributable wheels." msgstr "" -#: ../source/guides/tool-recommendations.rst:140 +#: ../source/guides/tool-recommendations.rst:145 msgid "Uploading to PyPI" msgstr "" -#: ../source/guides/tool-recommendations.rst:142 +#: ../source/guides/tool-recommendations.rst:147 msgid "" "For projects hosted on or published via supported CI/CD platforms, it is " "recommended to use the :ref:`Trusted Publishing `, which " @@ -9531,45 +9537,45 @@ msgid "" "without a manually configured API token." msgstr "" -#: ../source/guides/tool-recommendations.rst:147 +#: ../source/guides/tool-recommendations.rst:152 msgid "" "As of November 2024, PyPI supports the following platforms as Trusted " "Publishing providers:" msgstr "" -#: ../source/guides/tool-recommendations.rst:150 +#: ../source/guides/tool-recommendations.rst:155 msgid "GitHub Actions (on ``https://github.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:151 +#: ../source/guides/tool-recommendations.rst:156 msgid "GitLab CI/CD (on ``https://gitlab.com``)" msgstr "" -#: ../source/guides/tool-recommendations.rst:152 +#: ../source/guides/tool-recommendations.rst:157 msgid "ActiveState" msgstr "" -#: ../source/guides/tool-recommendations.rst:153 +#: ../source/guides/tool-recommendations.rst:158 msgid "Google Cloud" msgstr "" -#: ../source/guides/tool-recommendations.rst:155 +#: ../source/guides/tool-recommendations.rst:160 msgid "" "The other available method is to upload the package manually " "using :ref:`twine`." msgstr "" -#: ../source/guides/tool-recommendations.rst:159 +#: ../source/guides/tool-recommendations.rst:164 msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -#: ../source/guides/tool-recommendations.rst:164 +#: ../source/guides/tool-recommendations.rst:169 msgid "Workflow tools" msgstr "" -#: ../source/guides/tool-recommendations.rst:166 +#: ../source/guides/tool-recommendations.rst:171 msgid "" "These tools are environment managers that automatically manage virtual " "environments for a project. They also act as \"task runners\", allowing you " @@ -9580,31 +9586,31 @@ msgid "" "alphabetical order:" msgstr "" -#: ../source/guides/tool-recommendations.rst:174 +#: ../source/guides/tool-recommendations.rst:179 msgid ":ref:`Flit`," msgstr ":ref:`Flit`," -#: ../source/guides/tool-recommendations.rst:175 +#: ../source/guides/tool-recommendations.rst:180 msgid ":ref:`Hatch`," msgstr ":ref:`Hatch`," -#: ../source/guides/tool-recommendations.rst:176 +#: ../source/guides/tool-recommendations.rst:181 msgid ":doc:`nox `," msgstr "" -#: ../source/guides/tool-recommendations.rst:177 +#: ../source/guides/tool-recommendations.rst:182 msgid ":ref:`PDM`," msgstr ":ref:`PDM`," -#: ../source/guides/tool-recommendations.rst:178 +#: ../source/guides/tool-recommendations.rst:183 msgid ":ref:`Pipenv`," msgstr ":ref:`Pipenv`," -#: ../source/guides/tool-recommendations.rst:179 +#: ../source/guides/tool-recommendations.rst:184 msgid ":ref:`Poetry`," msgstr ":ref:`Poetry`," -#: ../source/guides/tool-recommendations.rst:180 +#: ../source/guides/tool-recommendations.rst:185 msgid ":doc:`tox `." msgstr "" @@ -10010,7 +10016,7 @@ msgid "``license`` and ``license-files``" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:299 -msgid "As per :pep:`639` licenses should be declared with two fields:" +msgid "As per :pep:`639`, licenses should be declared with two fields:" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:301 @@ -10119,90 +10125,90 @@ msgstr "" #: ../source/guides/writing-pyproject-toml.rst:353 msgid "" -"If your project is licensed with a license that doesn't have an existing " -"SPDX identifier, you can create a custom one in format ``LicenseRef-" -"[idstring]``. The custom identifiers must follow the SPDX specification, " -"`clause 10.1 `_ of the version 2.2 or any later compatible " -"one." +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:368 #: ../source/specifications/pyproject-toml.rst:147 #: ../source/specifications/pyproject-toml.rst:293 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:369 +#: ../source/guides/writing-pyproject-toml.rst:370 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:378 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:380 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " "(``.``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:382 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:384 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:385 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:387 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:388 +#: ../source/guides/writing-pyproject-toml.rst:389 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:395 #: ../source/specifications/pyproject-toml.rst:145 #: ../source/specifications/pyproject-toml.rst:376 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:396 +#: ../source/guides/writing-pyproject-toml.rst:397 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:409 #: ../source/specifications/pyproject-toml.rst:137 #: ../source/specifications/pyproject-toml.rst:388 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:410 +#: ../source/guides/writing-pyproject-toml.rst:411 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:434 +#: ../source/guides/writing-pyproject-toml.rst:435 msgid "" "Although the list of classifiers is often used to declare what Python " "versions a project supports, this information is only used for searching and " @@ -10211,26 +10217,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:439 +#: ../source/guides/writing-pyproject-toml.rst:440 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " "with classifiers beginning with ``Private ::``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:447 #: ../source/specifications/pyproject-toml.rst:154 #: ../source/specifications/pyproject-toml.rst:406 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:448 +#: ../source/guides/writing-pyproject-toml.rst:449 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:453 +#: ../source/guides/writing-pyproject-toml.rst:454 msgid "" "See :ref:`well-known-labels` for a listing of labels that PyPI and other " "packaging tools are specifically aware of, and `PyPI's project metadata docs " @@ -10238,28 +10244,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:467 +#: ../source/guides/writing-pyproject-toml.rst:468 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" "example.com\"``." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:471 +#: ../source/guides/writing-pyproject-toml.rst:472 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " "specialize their presentation." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:475 +#: ../source/guides/writing-pyproject-toml.rst:476 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " "verbatim:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:485 +#: ../source/guides/writing-pyproject-toml.rst:486 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10267,33 +10273,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:498 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:499 +#: ../source/guides/writing-pyproject-toml.rst:500 msgid "" "Some packages can be extended through plugins. Examples include Pytest_ and " "Pygments_. To create such a plugin, you need to declare it in a subtable of " "``[project.entry-points]`` like this:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:508 +#: ../source/guides/writing-pyproject-toml.rst:509 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:513 +#: ../source/guides/writing-pyproject-toml.rst:514 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:576 +#: ../source/guides/writing-pyproject-toml.rst:577 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " "information regarding possible problems." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:580 +#: ../source/guides/writing-pyproject-toml.rst:581 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13345,92 +13351,88 @@ msgid "" "RECORD is a list of (almost) all the files in the wheel and their secure " "hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " "hash of itself, must include its hash. The hash algorithm must be sha256 or " -"better; specifically, md5 and sha1 are not permitted, as signed wheel files " -"rely on the strong hashes in RECORD to validate the integrity of the archive." +"better; specifically, md5 and sha1 are not permitted." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:245 +#: ../source/specifications/binary-distribution-format.rst:244 msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:246 -msgid "" -"RECORD.jws is used for digital signatures. It is not mentioned in RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:248 +#: ../source/specifications/binary-distribution-format.rst:245 msgid "" -"RECORD.p7s is allowed as a courtesy to anyone who would prefer to use S/MIME " -"signatures to secure their wheel files. It is not mentioned in RECORD." +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:251 +#: ../source/specifications/binary-distribution-format.rst:250 msgid "" "During extraction, wheel installers verify all the hashes in RECORD against " -"the file contents. Apart from RECORD and its signatures, installation will " -"fail if any file in the archive is not both mentioned and correctly hashed " -"in RECORD." +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:257 +#: ../source/specifications/binary-distribution-format.rst:256 msgid "Subdirectories in :file:`.dist-info/`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:259 +#: ../source/specifications/binary-distribution-format.rst:258 msgid "" "Subdirectories under :file:`.dist-info/` are reserved for future use. The " "following subdirectory names under :file:`.dist-info/` are reserved for " "specific usage:" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 #, fuzzy #| msgid "Project name" msgid "Subdirectory name" msgstr "專案名稱" -#: ../source/specifications/binary-distribution-format.rst:263 +#: ../source/specifications/binary-distribution-format.rst:262 msgid "PEP / Standard" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:265 +#: ../source/specifications/binary-distribution-format.rst:264 #, fuzzy #| msgid "License" msgid "``licenses``" msgstr "許可證" +#: ../source/specifications/binary-distribution-format.rst:264 #: ../source/specifications/binary-distribution-format.rst:265 -#: ../source/specifications/binary-distribution-format.rst:266 msgid ":pep:`639`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:266 +#: ../source/specifications/binary-distribution-format.rst:265 msgid "``license_files``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 #, fuzzy #| msgid "``LIB``" msgid "``LICENSES``" msgstr "``LIB``" -#: ../source/specifications/binary-distribution-format.rst:267 +#: ../source/specifications/binary-distribution-format.rst:266 msgid "`REUSE licensing framework `__" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid "``sboms``" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:268 +#: ../source/specifications/binary-distribution-format.rst:267 msgid ":pep:`770`" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:272 +#: ../source/specifications/binary-distribution-format.rst:271 msgid "The :file:`.dist-info/licenses/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:274 +#: ../source/specifications/binary-distribution-format.rst:273 msgid "" "If the metadata version is 2.4 or greater and one or more ``License-File`` " "fields is specified, the :file:`.dist-info/` directory MUST contain " @@ -13439,118 +13441,45 @@ msgid "" "paths relative to the :file:`licenses/` directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:281 +#: ../source/specifications/binary-distribution-format.rst:280 msgid "The :file:`.dist-info/sboms/` directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:283 +#: ../source/specifications/binary-distribution-format.rst:282 msgid "" "All files contained within the :file:`.dist-info/sboms/` directory MUST be " "Software Bill-of-Materials (SBOM) files that describe software contained " "within the distribution archive." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:288 +#: ../source/specifications/binary-distribution-format.rst:287 msgid "The .data directory" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:290 +#: ../source/specifications/binary-distribution-format.rst:289 msgid "" "Any file that is not normally installed inside site-packages goes into " "the .data directory, named as the .dist-info directory but with the .data/ " "extension::" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:298 +#: ../source/specifications/binary-distribution-format.rst:297 msgid "" "The .data directory contains subdirectories with the scripts, headers, " "documentation and so forth from the distribution. During installation the " "contents of these subdirectories are moved onto their destination paths." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:304 -msgid "Signed wheel files" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:306 -msgid "" -"Wheel files include an extended RECORD that enables digital signatures. PEP " -"376's RECORD is altered to include a secure hash " -"``digestname=urlsafe_b64encode_nopad(digest)`` (urlsafe base64 encoding with " -"no trailing = characters) as the second column instead of an md5sum. All " -"possible entries are hashed, including any generated files such as .pyc " -"files, but not RECORD which cannot contain its own hash. For example::" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:317 -msgid "" -"The signature file(s) RECORD.jws and RECORD.p7s are not mentioned in RECORD " -"at all since they can only be added after RECORD is generated. Every other " -"file in the archive must have a correct hash in RECORD or the installation " -"will fail." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:322 -msgid "" -"If JSON web signatures are used, one or more JSON Web Signature JSON " -"Serialization (JWS-JS) signatures is stored in a file RECORD.jws adjacent to " -"RECORD. JWS is used to sign RECORD by including the SHA-256 hash of RECORD " -"as the signature's JSON payload:" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:331 -msgid "(The hash value is the same format used in RECORD.)" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:333 -msgid "" -"If RECORD.p7s is used, it must contain a detached S/MIME format signature of " -"RECORD." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:336 -msgid "" -"A wheel installer is not required to understand digital signatures but MUST " -"verify the hashes in RECORD against the extracted file contents. When the " -"installer checks file hashes against RECORD, a separate signature checker " -"only needs to establish that RECORD matches the signature." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:341 -msgid "See" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:343 -msgid "https://datatracker.ietf.org/doc/html/rfc7515" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:344 -#, fuzzy -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" -"serialization-01" -msgstr "http://self-issued.info/docs/draft-jones-jose-json-private-key.html" - -#: ../source/specifications/binary-distribution-format.rst:345 -msgid "https://datatracker.ietf.org/doc/html/rfc7517" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:346 -#, fuzzy -msgid "" -"https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" -msgstr "http://self-issued.info/docs/draft-jones-jose-json-private-key.html" - -#: ../source/specifications/binary-distribution-format.rst:350 +#: ../source/specifications/binary-distribution-format.rst:303 #: ../source/specifications/platform-compatibility-tags.rst:376 msgid "FAQ" msgstr "常見問題" -#: ../source/specifications/binary-distribution-format.rst:354 +#: ../source/specifications/binary-distribution-format.rst:307 msgid "Wheel defines a .data directory. Should I put all my data there?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:356 +#: ../source/specifications/binary-distribution-format.rst:309 msgid "" "This specification does not have an opinion on how you should organize your " "code. The .data directory is just a place for any files that are not " @@ -13560,51 +13489,11 @@ msgid "" "directory." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:365 -msgid "Why does wheel include attached signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:367 -msgid "" -"Attached signatures are more convenient than detached signatures because " -"they travel with the archive. Since only the individual files are signed, " -"the archive can be recompressed without invalidating the signature or " -"individual files can be verified without having to download the whole " -"archive." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:375 -msgid "Why does wheel allow JWS signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:377 -msgid "" -"The JOSE specifications of which JWS is a part are designed to be easy to " -"implement, a feature that is also one of wheel's primary design goals. JWS " -"yields a useful, concise pure-Python implementation." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:383 -msgid "Why does wheel also allow S/MIME signatures?" -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:385 -msgid "" -"S/MIME signatures are allowed for users who need or want to use existing " -"public key infrastructure with wheel." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:388 -msgid "" -"Signed packages are only a basic building block in a secure package update " -"system. Wheel only provides the building block." -msgstr "" - -#: ../source/specifications/binary-distribution-format.rst:393 +#: ../source/specifications/binary-distribution-format.rst:318 msgid "What's the deal with \"purelib\" vs. \"platlib\"?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:395 +#: ../source/specifications/binary-distribution-format.rst:320 msgid "" "Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " "significant on some platforms. For example, Fedora installs pure Python " @@ -13612,7 +13501,7 @@ msgid "" "packages to '/usr/lib64/pythonX.Y/site-packages'." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:400 +#: ../source/specifications/binary-distribution-format.rst:325 msgid "" "A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" "{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " @@ -13620,18 +13509,18 @@ msgid "" "both the \"purelib\" and \"platlib\" categories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:405 +#: ../source/specifications/binary-distribution-format.rst:330 msgid "" "In practice a wheel should have only one of \"purelib\" or \"platlib\" " "depending on whether it is pure Python or not and those files should be at " "the root with the appropriate setting given for \"Root-is-purelib\"." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:413 +#: ../source/specifications/binary-distribution-format.rst:338 msgid "Is it possible to import Python code directly from a wheel file?" msgstr "" -#: ../source/specifications/binary-distribution-format.rst:415 +#: ../source/specifications/binary-distribution-format.rst:340 msgid "" "Technically, due to the combination of supporting installation via simple " "extraction and using an archive format that is compatible with " @@ -13640,7 +13529,7 @@ msgid "" "format design, actually relying on it is generally discouraged." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:421 +#: ../source/specifications/binary-distribution-format.rst:346 msgid "" "Firstly, wheel *is* designed primarily as a distribution format, so skipping " "the installation step also means deliberately avoiding any reliance on " @@ -13651,7 +13540,7 @@ msgid "" "extensions by publishing header files in the appropriate place)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:430 +#: ../source/specifications/binary-distribution-format.rst:355 msgid "" "Secondly, while some Python software is written to support running directly " "from a zip archive, it is still common for code to be written assuming it " @@ -13669,7 +13558,7 @@ msgid "" "components may still require the availability of an actual on-disk file." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:447 +#: ../source/specifications/binary-distribution-format.rst:372 msgid "" "Like metaclasses, monkeypatching and metapath importers, if you're not " "already sure you need to take advantage of this feature, you almost " @@ -13678,7 +13567,7 @@ msgid "" "package before accepting it as a genuine bug." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:455 +#: ../source/specifications/binary-distribution-format.rst:380 #: ../source/specifications/core-metadata.rst:1035 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 @@ -13692,24 +13581,24 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:634 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:972 +#: ../source/specifications/simple-repository-api.rst:974 #: ../source/specifications/source-distribution-format.rst:153 -#: ../source/specifications/version-specifiers.rst:1269 +#: ../source/specifications/version-specifiers.rst:1270 #: ../source/specifications/virtual-environments.rst:54 msgid "History" msgstr "歷史" -#: ../source/specifications/binary-distribution-format.rst:457 +#: ../source/specifications/binary-distribution-format.rst:382 msgid "February 2013: This specification was approved through :pep:`427`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:458 +#: ../source/specifications/binary-distribution-format.rst:383 msgid "" "February 2021: The rules on escaping in wheel filenames were revised, to " "bring them into line with what popular tools actually do." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:460 +#: ../source/specifications/binary-distribution-format.rst:385 msgid "" "December 2024: Clarified that the ``scripts`` folder should only contain " "regular files (the expected behaviour of consuming tools when encountering " @@ -13717,24 +13606,28 @@ msgid "" "may vary between tools)." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:464 +#: ../source/specifications/binary-distribution-format.rst:389 #: ../source/specifications/recording-installed-packages.rst:288 msgid "" "December 2024: The :file:`.dist-info/licenses/` directory was specified " "through :pep:`639`." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:466 +#: ../source/specifications/binary-distribution-format.rst:391 msgid "" "January 2025: Clarified that name and version needs to be normalized for " "``.dist-info`` and ``.data`` directories." msgstr "" -#: ../source/specifications/binary-distribution-format.rst:471 +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 msgid "Appendix" msgstr "附錄" -#: ../source/specifications/binary-distribution-format.rst:473 +#: ../source/specifications/binary-distribution-format.rst:399 msgid "Example urlsafe-base64-nopad implementation::" msgstr "" @@ -14513,11 +14406,11 @@ msgstr "" #: ../source/specifications/core-metadata.rst:55 msgid "" -"Automated tools consuming metadata SHOULD warn if ``metadata_version`` is " -"greater than the highest version they support, and MUST fail if " -"``metadata_version`` has a greater major version than the highest version " -"they support (as described in the :ref:`Version specifier specification " -"`, the major version is the value before the first dot)." +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." msgstr "" #: ../source/specifications/core-metadata.rst:62 @@ -16359,17 +16252,23 @@ msgid "" "incorrectly permitting trailing newlines)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:537 +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 msgid "" "pip, the recommended installer for Python packages (http://" "pip.readthedocs.org/en/stable/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:540 +#: ../source/specifications/dependency-specifiers.rst:542 msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" msgstr "" -#: ../source/specifications/dependency-specifiers.rst:543 +#: ../source/specifications/dependency-specifiers.rst:545 msgid "" "Future Python versions might be problematic with the definition of " "Environment Marker Variable ``python_version`` (https://github.com/python/" @@ -18384,7 +18283,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:914 +#: ../source/specifications/simple-repository-api.rst:916 msgid "Recommendations" msgstr "" @@ -22481,7 +22380,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:258 -#: ../source/specifications/simple-repository-api.rst:601 +#: ../source/specifications/simple-repository-api.rst:603 msgid "" "The semantics of how tools should handle yanked files is described " "in :ref:`file-yanking`." @@ -22520,7 +22419,7 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:283 -#: ../source/specifications/simple-repository-api.rst:493 +#: ../source/specifications/simple-repository-api.rst:489 msgid "" "The set of valid project status markers and their semantics is described " "in :ref:`project-status-markers`." @@ -22741,14 +22640,14 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:434 -#: ../source/specifications/simple-repository-api.rst:484 +#: ../source/specifications/simple-repository-api.rst:508 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" #: ../source/specifications/simple-repository-api.rst:436 -#: ../source/specifications/simple-repository-api.rst:632 +#: ../source/specifications/simple-repository-api.rst:634 msgid "As an example:" msgstr "" @@ -22782,7 +22681,7 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:480 msgid "" -"This URL must respond with a JSON encoded dictionary that has four keys:" +"This URL must respond with a JSON encoded dictionary that has five keys:" msgstr "" #: ../source/specifications/simple-repository-api.rst:482 @@ -22790,45 +22689,45 @@ msgid "``name``: The normalized name of the project." msgstr "" #: ../source/specifications/simple-repository-api.rst:483 -msgid "" -"``files``: A list of dictionaries, each one representing an individual file." +msgid "``project-status``: An optional dictionary, containing the following:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:486 -msgid "" -"In addition to the general response metadata, the project detail ``meta`` " -"dictionary **MAY** also include the following:" +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." msgstr "" -#: ../source/specifications/simple-repository-api.rst:489 -msgid "" -"``project-status``: If present, this **MUST** be a valid project status " -"marker." +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:498 -msgid "The ``project-status`` key was added with API version 1.4." +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." msgstr "" -#: ../source/specifications/simple-repository-api.rst:500 -msgid "" -"``project-status-reason``: If present, this **MUST** be an arbitrary string " -"description of the project status." +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:505 -msgid "The ``project-status-reason`` key was added with API version 1.4." +msgid "The ``project-status`` key was added with API version 1.4." msgstr "" #: ../source/specifications/simple-repository-api.rst:507 msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " "set, and as such may not contain duplicates, and the order of the versions " "is not significant." msgstr "" -#: ../source/specifications/simple-repository-api.rst:514 +#: ../source/specifications/simple-repository-api.rst:516 msgid "" "All of the files listed in the ``files`` key MUST be associated with one of " "the versions in the ``versions`` key. The ``versions`` key MAY contain " @@ -22836,7 +22735,7 @@ msgid "" "uploaded, if the server has such a concept)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:523 msgid "" "Because servers may hold \"legacy\" data from before the adoption " "of :ref:`the version specifiers specification (VSS) `, " @@ -22845,23 +22744,23 @@ msgid "" "servers **SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:529 +#: ../source/specifications/simple-repository-api.rst:531 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:531 +#: ../source/specifications/simple-repository-api.rst:533 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:533 +#: ../source/specifications/simple-repository-api.rst:535 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:534 +#: ../source/specifications/simple-repository-api.rst:536 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:535 +#: ../source/specifications/simple-repository-api.rst:537 msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " "file. Multiple hashes can be included, and it is up to the client to decide " @@ -22870,14 +22769,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:540 +#: ../source/specifications/simple-repository-api.rst:542 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " "one secure, guaranteed-to-be-available hash is always included." msgstr "" -#: ../source/specifications/simple-repository-api.rst:544 +#: ../source/specifications/simple-repository-api.rst:546 msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " "any that can be passed to :py:func:`hashlib.new()` and do not require " @@ -22887,7 +22786,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:549 +#: ../source/specifications/simple-repository-api.rst:551 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22895,14 +22794,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:555 +#: ../source/specifications/simple-repository-api.rst:557 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " "any special escaping other than anything JSON does naturally." msgstr "" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:560 msgid "" "``core-metadata``: An **optional** key that indicates that metadata for this " "file is available, via the same location as specified in :ref:`the API " @@ -22912,45 +22811,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:566 +#: ../source/specifications/simple-repository-api.rst:568 msgid "" "When this is a dictionary of hashes instead of a boolean, then all the same " "requirements and recommendations as the ``hashes`` key hold true for this " "key as well." msgstr "" -#: ../source/specifications/simple-repository-api.rst:570 +#: ../source/specifications/simple-repository-api.rst:572 msgid "" "If this key is missing then the metadata file may or may not exist. If the " "key value is truthy, then the metadata file is present, and if it is falsey " "then it is not." msgstr "" -#: ../source/specifications/simple-repository-api.rst:574 +#: ../source/specifications/simple-repository-api.rst:576 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:577 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:579 +#: ../source/specifications/simple-repository-api.rst:581 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:584 +#: ../source/specifications/simple-repository-api.rst:586 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:589 msgid "" "``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " "has an associated GPG signature or not. The URL for the signature file " @@ -22959,7 +22858,7 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:595 msgid "" "``yanked``: An **optional** key which may be either a boolean to indicate if " "the file has been yanked, or a non empty, but otherwise arbitrary, string to " @@ -22969,17 +22868,17 @@ msgid "" "been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:606 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:608 +#: ../source/specifications/simple-repository-api.rst:610 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:610 +#: ../source/specifications/simple-repository-api.rst:612 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-" @@ -22987,7 +22886,7 @@ msgid "" "index." msgstr "" -#: ../source/specifications/simple-repository-api.rst:614 +#: ../source/specifications/simple-repository-api.rst:616 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22996,11 +22895,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:621 +#: ../source/specifications/simple-repository-api.rst:623 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:623 +#: ../source/specifications/simple-repository-api.rst:625 msgid "" "``provenance``: An **optional** key which, if present **MUST** be either a " "JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " @@ -23008,11 +22907,11 @@ msgid "" "the :ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:630 +#: ../source/specifications/simple-repository-api.rst:632 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:668 +#: ../source/specifications/simple-repository-api.rst:670 msgid "" "While the ``files`` key is an array, and thus is required to be in some kind " "of an order, neither :ref:`the base HTML API specification ` API responses to use the " @@ -23077,12 +22976,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:711 +#: ../source/specifications/simple-repository-api.rst:713 #, fuzzy msgid "Version + Format Selection" msgstr "翻譯" -#: ../source/specifications/simple-repository-api.rst:713 +#: ../source/specifications/simple-repository-api.rst:715 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -23091,65 +22990,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:718 +#: ../source/specifications/simple-repository-api.rst:720 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:723 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:726 msgid "" "The client makes an HTTP request containing an ``Accept`` header listing all " "of the version+format content types that they are able to understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:726 +#: ../source/specifications/simple-repository-api.rst:728 msgid "" "The server inspects that header, selects one of the listed content types, " "then returns a response using that content type (treating the absence of an " "``Accept`` header as ``Accept: */*``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:731 msgid "" "If the server does not support any of the content types in the ``Accept`` " "header then they are able to choose between 3 different options for how to " "respond:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:733 +#: ../source/specifications/simple-repository-api.rst:735 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." msgstr "" -#: ../source/specifications/simple-repository-api.rst:735 +#: ../source/specifications/simple-repository-api.rst:737 msgid "" "Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " "requested content types were available, and the server was unable or " "unwilling to select a default content type to respond with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:738 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." msgstr "" -#: ../source/specifications/simple-repository-api.rst:740 +#: ../source/specifications/simple-repository-api.rst:742 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:745 msgid "" "This spec does not specify which choices the server makes in regards to " "handling a content type that it isn't able to return, and clients **SHOULD** " @@ -23157,7 +23056,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:750 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23168,7 +23067,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:757 msgid "" "This spec **does** require that if the meta version ``latest`` is being " "used, the server **MUST** respond with the content type for the actual " @@ -23177,33 +23076,33 @@ msgid "" "should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:764 msgid "" "The ``Accept`` header is a comma separated list of content types that the " "client understands and is able to process. It supports three different " "formats for each content type that is being requested:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:766 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:767 +#: ../source/specifications/simple-repository-api.rst:769 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:770 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:770 +#: ../source/specifications/simple-repository-api.rst:772 msgid "" "For the use of selecting a version+format, the most useful of these is " "``$type/$subtype``, as that is the only way to actually specify the version " "and format you want." msgstr "" -#: ../source/specifications/simple-repository-api.rst:774 +#: ../source/specifications/simple-repository-api.rst:776 msgid "" "The order of the content types listed in the ``Accept`` header does not have " "any specific meaning, and the server **SHOULD** consider all of them to be " @@ -23213,7 +23112,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:781 +#: ../source/specifications/simple-repository-api.rst:783 msgid "" "This allows a client to specify a priority for a specific entry in their " "``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " @@ -23223,7 +23122,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:787 +#: ../source/specifications/simple-repository-api.rst:789 msgid "" "However, clients should keep in mind that a server is free to select **any** " "of the content types they've asked for, regardless of their requested " @@ -23231,7 +23130,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:791 +#: ../source/specifications/simple-repository-api.rst:793 msgid "" "To aid clients in determining the content type of the response that they " "have received from an API request, this spec requires that servers always " @@ -23242,22 +23141,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:798 +#: ../source/specifications/simple-repository-api.rst:800 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:849 +#: ../source/specifications/simple-repository-api.rst:851 msgid "" "If a client wishes to only support HTML or only support JSON, then they " "would just remove the content types that they do not want from the " "``Accept`` header, and turn receiving them into an error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:857 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:857 +#: ../source/specifications/simple-repository-api.rst:859 msgid "" "While using HTTP's Content negotiation is considered the standard way for a " "client and server to coordinate to ensure that the client is getting an HTTP " @@ -23266,25 +23165,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:865 +#: ../source/specifications/simple-repository-api.rst:867 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:867 +#: ../source/specifications/simple-repository-api.rst:869 msgid "" "Servers that implement the Simple API may choose to support a URL parameter " "named ``format`` to allow the clients to request a specific version of the " "URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:870 +#: ../source/specifications/simple-repository-api.rst:872 msgid "" "The value of the ``format`` parameter should be **one** of the valid content " "types. Passing multiple content types, wild cards, quality values, etc... is " "**not** supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:876 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23292,13 +23191,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:879 +#: ../source/specifications/simple-repository-api.rst:881 msgid "" "Servers that do not support this parameter may choose to return an error " "when it is present, or they may simple ignore its presence." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:884 msgid "" "When a server does implement this parameter, it **SHOULD** take precedence " "over any values in the client's ``Accept`` header, and if the server does " @@ -23308,18 +23207,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:891 +#: ../source/specifications/simple-repository-api.rst:893 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:893 +#: ../source/specifications/simple-repository-api.rst:895 msgid "" "This option technically is not a special option at all, it is just a natural " "consequence of using content negotiation and allowing servers to select " "which of the available content types is their default." msgstr "" -#: ../source/specifications/simple-repository-api.rst:897 +#: ../source/specifications/simple-repository-api.rst:899 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23327,7 +23226,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:901 +#: ../source/specifications/simple-repository-api.rst:903 msgid "" "To enable this, a server should make multiple endpoints (for instance, ``/" "simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " @@ -23337,7 +23236,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:908 +#: ../source/specifications/simple-repository-api.rst:910 msgid "" "For clients that wish to require specific configuration, they can keep track " "of which version+format a specific repository URL was configured for, and " @@ -23345,7 +23244,7 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:918 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23353,7 +23252,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:922 msgid "" "These decisions have been chosen to maximize the number of requests that can " "be moved onto the newest version of an API, while maintaining the greatest " @@ -23362,18 +23261,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:925 +#: ../source/specifications/simple-repository-api.rst:927 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can, or at least as long " "as they're receiving non trivial traffic that uses the HTML responses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:933 msgid "" "When encountering an ``Accept`` header that does not contain any content " "types that it knows how to work with, the server should not ever return a " @@ -23381,13 +23280,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:936 +#: ../source/specifications/simple-repository-api.rst:938 msgid "" "However, if choosing to use the endpoint configuration, you should prefer to " "return a ``200 OK`` response in the expected content type for that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:939 +#: ../source/specifications/simple-repository-api.rst:941 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23396,23 +23295,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:945 +#: ../source/specifications/simple-repository-api.rst:947 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:947 +#: ../source/specifications/simple-repository-api.rst:949 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:950 +#: ../source/specifications/simple-repository-api.rst:952 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:953 +#: ../source/specifications/simple-repository-api.rst:955 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23421,79 +23320,79 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:959 +#: ../source/specifications/simple-repository-api.rst:961 msgid "" "The one exception to this recommendation is that it is recommended that you " "*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " "type, unless it is the only content type that you are requesting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:963 +#: ../source/specifications/simple-repository-api.rst:965 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:968 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:976 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:975 +#: ../source/specifications/simple-repository-api.rst:977 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:976 +#: ../source/specifications/simple-repository-api.rst:978 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:977 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:979 +#: ../source/specifications/simple-repository-api.rst:981 msgid "" "May 2021: providing package metadata independently from a package, " "in :pep:`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:981 +#: ../source/specifications/simple-repository-api.rst:983 msgid "" "May 2022: initial form of the JSON format, with a mechanism for clients to " "choose between them, and declaring both formats as API v1, in :pep:`691`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:983 +#: ../source/specifications/simple-repository-api.rst:985 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:985 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:989 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, " "in :pep:`740`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:988 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:989 +#: ../source/specifications/simple-repository-api.rst:991 msgid "" "July 2025: layout changes (dedicated page for file yanking, introduce " "concepts before API details)" @@ -25064,11 +24963,13 @@ msgstr "" msgid "" "Arbitrary equality comparisons are simple string equality operations which " "do not take into account any of the semantic information such as zero " -"padding or local versions. This operator also does not support prefix " -"matching as the ``==`` operator does." +"padding or local versions. The comparison MUST treat ASCII letters case-" +"insensitively, e.g. by lowercasing, and is unspecified for non-ASCII text. " +"This operator also does not support prefix matching as the ``==`` operator " +"does." msgstr "" -#: ../source/specifications/version-specifiers.rst:1022 +#: ../source/specifications/version-specifiers.rst:1023 msgid "" "The primary use case for arbitrary equality is to allow for specifying a " "version which cannot otherwise be represented by this specification. This " @@ -25077,29 +24978,29 @@ msgid "" "which is otherwise incompatible with this specification." msgstr "" -#: ../source/specifications/version-specifiers.rst:1028 +#: ../source/specifications/version-specifiers.rst:1029 msgid "" "An example would be ``===foobar`` which would match a version of ``foobar``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1030 +#: ../source/specifications/version-specifiers.rst:1031 msgid "" "This operator may also be used to explicitly require an unpatched version of " "a project such as ``===1.0`` which would not match for a version " "``1.0+downstream1``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1034 +#: ../source/specifications/version-specifiers.rst:1035 msgid "" "Use of this operator is heavily discouraged and tooling MAY display a " "warning when it is used." msgstr "" -#: ../source/specifications/version-specifiers.rst:1039 +#: ../source/specifications/version-specifiers.rst:1040 msgid "Handling of pre-releases" msgstr "" -#: ../source/specifications/version-specifiers.rst:1041 +#: ../source/specifications/version-specifiers.rst:1042 msgid "" "Pre-releases of any kind, including developmental releases, are implicitly " "excluded from all version specifiers, *unless* they are already present on " @@ -25107,101 +25008,101 @@ msgid "" "version that satisfies the version specifier is a pre-release." msgstr "" -#: ../source/specifications/version-specifiers.rst:1046 +#: ../source/specifications/version-specifiers.rst:1047 msgid "By default, dependency resolution tools SHOULD:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1048 +#: ../source/specifications/version-specifiers.rst:1049 msgid "accept already installed pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1049 +#: ../source/specifications/version-specifiers.rst:1050 msgid "" "accept remotely available pre-releases for version specifiers where there is " "no final or post release that satisfies the version specifier" msgstr "" -#: ../source/specifications/version-specifiers.rst:1051 +#: ../source/specifications/version-specifiers.rst:1052 msgid "exclude all other pre-releases from consideration" msgstr "" -#: ../source/specifications/version-specifiers.rst:1053 +#: ../source/specifications/version-specifiers.rst:1054 msgid "" "Dependency resolution tools MAY issue a warning if a pre-release is needed " "to satisfy a version specifier." msgstr "" -#: ../source/specifications/version-specifiers.rst:1056 +#: ../source/specifications/version-specifiers.rst:1057 msgid "" "Dependency resolution tools SHOULD also allow users to request the following " "alternative behaviours:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1059 +#: ../source/specifications/version-specifiers.rst:1060 msgid "accepting pre-releases for all version specifiers" msgstr "" -#: ../source/specifications/version-specifiers.rst:1060 +#: ../source/specifications/version-specifiers.rst:1061 msgid "" "excluding pre-releases for all version specifiers (reporting an error or " "warning if a pre-release is already installed locally, or if a pre-release " "is the only way to satisfy a particular specifier)" msgstr "" -#: ../source/specifications/version-specifiers.rst:1064 +#: ../source/specifications/version-specifiers.rst:1065 msgid "" "Dependency resolution tools MAY also allow the above behaviour to be " "controlled on a per-distribution basis." msgstr "" -#: ../source/specifications/version-specifiers.rst:1067 +#: ../source/specifications/version-specifiers.rst:1068 msgid "" "Post-releases and final releases receive no special treatment in version " "specifiers - they are always included unless explicitly excluded." msgstr "" -#: ../source/specifications/version-specifiers.rst:1074 +#: ../source/specifications/version-specifiers.rst:1075 msgid "``~=3.1``: version 3.1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1075 +#: ../source/specifications/version-specifiers.rst:1076 msgid "``~=3.1.2``: version 3.1.2 or later, but not version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1076 +#: ../source/specifications/version-specifiers.rst:1077 msgid "``~=3.1a1``: version 3.1a1 or later, but not version 4.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1077 +#: ../source/specifications/version-specifiers.rst:1078 msgid "" "``== 3.1``: specifically version 3.1 (or 3.1.0), excludes all pre-releases, " "post releases, developmental releases and any 3.1.x maintenance releases." msgstr "" -#: ../source/specifications/version-specifiers.rst:1079 +#: ../source/specifications/version-specifiers.rst:1080 msgid "" "``== 3.1.*``: any version that starts with 3.1. Equivalent to the " "``~=3.1.0`` compatible release clause." msgstr "" -#: ../source/specifications/version-specifiers.rst:1081 +#: ../source/specifications/version-specifiers.rst:1082 msgid "" "``~=3.1.0, != 3.1.3``: version 3.1.0 or later, but not version 3.1.3 and not " "version 3.2.0 or later." msgstr "" -#: ../source/specifications/version-specifiers.rst:1086 +#: ../source/specifications/version-specifiers.rst:1087 msgid "Direct references" msgstr "" -#: ../source/specifications/version-specifiers.rst:1088 +#: ../source/specifications/version-specifiers.rst:1089 msgid "" "Some automated tools may permit the use of a direct reference as an " "alternative to a normal version specifier. A direct reference consists of " "the specifier ``@`` and an explicit URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1092 +#: ../source/specifications/version-specifiers.rst:1093 msgid "" "Whether or not direct references are appropriate depends on the specific use " "case for the version specifier. Automated tools SHOULD at least issue " @@ -25209,29 +25110,29 @@ msgid "" "inappropriately." msgstr "" -#: ../source/specifications/version-specifiers.rst:1097 +#: ../source/specifications/version-specifiers.rst:1098 msgid "" "Public index servers SHOULD NOT allow the use of direct references in " "uploaded distributions. Direct references are intended as a tool for " "software integrators rather than publishers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1101 +#: ../source/specifications/version-specifiers.rst:1102 msgid "" "Depending on the use case, some appropriate targets for a direct URL " "reference may be an sdist or a wheel binary archive. The exact URLs and " "targets supported will be tool dependent." msgstr "" -#: ../source/specifications/version-specifiers.rst:1105 +#: ../source/specifications/version-specifiers.rst:1106 msgid "For example, a local source archive may be referenced directly::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1109 +#: ../source/specifications/version-specifiers.rst:1110 msgid "Alternatively, a prebuilt archive may also be referenced::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1113 +#: ../source/specifications/version-specifiers.rst:1114 msgid "" "All direct references that do not refer to a local file URL SHOULD specify a " "secure transport mechanism (such as ``https``) AND include an expected hash " @@ -25243,7 +25144,7 @@ msgid "" "insecure transport, automated tools SHOULD NOT rely on the URL." msgstr "" -#: ../source/specifications/version-specifiers.rst:1122 +#: ../source/specifications/version-specifiers.rst:1123 msgid "" "It is RECOMMENDED that only hashes which are unconditionally provided by the " "latest version of the standard library's :py:mod:`hashlib` module be used " @@ -25252,14 +25153,14 @@ msgid "" "``'sha512'``." msgstr "" -#: ../source/specifications/version-specifiers.rst:1128 +#: ../source/specifications/version-specifiers.rst:1129 msgid "" "For source archive and wheel references, an expected hash value may be " "specified by including a ``=`` entry as part " "of the URL fragment." msgstr "" -#: ../source/specifications/version-specifiers.rst:1132 +#: ../source/specifications/version-specifiers.rst:1133 msgid "" "For version control references, the ``VCS+protocol`` scheme SHOULD be used " "to identify both the version control system and the secure transport, and a " @@ -25268,7 +25169,7 @@ msgid "" "systems that do not provide hash based commit identifiers." msgstr "" -#: ../source/specifications/version-specifiers.rst:1138 +#: ../source/specifications/version-specifiers.rst:1139 msgid "" "To handle version control systems that do not support including commit or " "tag references directly in the URL, that information may be appended to the " @@ -25276,7 +25177,7 @@ msgid "" "notation." msgstr "" -#: ../source/specifications/version-specifiers.rst:1145 +#: ../source/specifications/version-specifiers.rst:1146 msgid "" "This isn't *quite* the same as the existing VCS reference notation supported " "by pip. Firstly, the distribution name is moved in front rather than " @@ -25287,15 +25188,15 @@ msgid "" "*hash*, less so)." msgstr "" -#: ../source/specifications/version-specifiers.rst:1153 +#: ../source/specifications/version-specifiers.rst:1154 msgid "Remote URL examples::" msgstr "" -#: ../source/specifications/version-specifiers.rst:1161 +#: ../source/specifications/version-specifiers.rst:1162 msgid "File URLs" msgstr "" -#: ../source/specifications/version-specifiers.rst:1163 +#: ../source/specifications/version-specifiers.rst:1164 msgid "" "File URLs take the form of ``file:///``. If the ```` is " "omitted it is assumed to be ``localhost`` and even if the ```` is " @@ -25303,7 +25204,7 @@ msgid "" "file path on the filesystem that is to be accessed." msgstr "" -#: ../source/specifications/version-specifiers.rst:1168 +#: ../source/specifications/version-specifiers.rst:1169 msgid "" "On the various \\*nix operating systems the only allowed values for " "```` is for it to be omitted, ``localhost``, or another FQDN that the " @@ -25311,7 +25212,7 @@ msgid "" "``file://`` scheme can only be used to access paths on the local machine." msgstr "" -#: ../source/specifications/version-specifiers.rst:1173 +#: ../source/specifications/version-specifiers.rst:1174 msgid "" "On Windows the file format should include the drive letter if applicable as " "part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " @@ -25323,43 +25224,43 @@ msgid "" "b/ie/archive/2006/12/06/file-uris-in-windows.aspx>`_." msgstr "" -#: ../source/specifications/version-specifiers.rst:1184 +#: ../source/specifications/version-specifiers.rst:1185 msgid "Summary of differences from pkg_resources.parse_version" msgstr "" -#: ../source/specifications/version-specifiers.rst:1186 +#: ../source/specifications/version-specifiers.rst:1187 msgid "" "Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " "the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " "and later versions adopted the behaviour described here." msgstr "" -#: ../source/specifications/version-specifiers.rst:1190 +#: ../source/specifications/version-specifiers.rst:1191 msgid "" "Local versions sort differently, this specification requires that they sort " "as greater than the same version without a local version, whereas " "``pkg_resources.parse_version`` considers it a pre-release marker." msgstr "" -#: ../source/specifications/version-specifiers.rst:1194 +#: ../source/specifications/version-specifiers.rst:1195 msgid "" "This specification purposely restricts the syntax which constitutes a valid " "version while ``pkg_resources.parse_version`` attempts to provide some " "meaning from *any* arbitrary string." msgstr "" -#: ../source/specifications/version-specifiers.rst:1198 +#: ../source/specifications/version-specifiers.rst:1199 msgid "" "``pkg_resources.parse_version`` allows arbitrarily deeply nested version " "signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " "only a single use of each type and they must exist in a certain order." msgstr "" -#: ../source/specifications/version-specifiers.rst:1207 +#: ../source/specifications/version-specifiers.rst:1208 msgid "Appendix: Parsing version strings with regular expressions" msgstr "" -#: ../source/specifications/version-specifiers.rst:1209 +#: ../source/specifications/version-specifiers.rst:1210 msgid "" "As noted earlier in the :ref:`public-version-identifiers` section, published " "version identifiers SHOULD use the canonical format. This section provides " @@ -25368,29 +25269,33 @@ msgid "" "normalization." msgstr "" -#: ../source/specifications/version-specifiers.rst:1215 +#: ../source/specifications/version-specifiers.rst:1216 msgid "" "To test whether a version identifier is in the canonical format, you can use " "the following function:" msgstr "" -#: ../source/specifications/version-specifiers.rst:1224 +#: ../source/specifications/version-specifiers.rst:1225 msgid "" "To extract the components of a version identifier, use the following regular " "expression (as defined by the `packaging `_ project):" msgstr "" -#: ../source/specifications/version-specifiers.rst:1271 +#: ../source/specifications/version-specifiers.rst:1272 msgid "August 2014: This specification was approved through :pep:`440`." msgstr "" -#: ../source/specifications/version-specifiers.rst:1272 +#: ../source/specifications/version-specifiers.rst:1273 msgid "" "May 2025: Clarify that development releases are a form of pre-release when " "they are handled." msgstr "" +#: ../source/specifications/version-specifiers.rst:1275 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + #: ../source/specifications/virtual-environments.rst:6 msgid "Python Virtual Environments" msgstr "" @@ -26761,7 +26666,7 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:222 msgid "" "``license`` is the :term:`SPDX license expression ` of " -"your package." +"your :term:`Distribution Archive` files." msgstr "" #: ../source/tutorials/packaging-projects.rst:224 @@ -26800,11 +26705,12 @@ msgstr "" #: ../source/tutorials/packaging-projects.rst:253 msgid "" -"It's important for every package uploaded to the Python Package Index to " -"include a license. This tells users who install your package the terms under " -"which they can use your package. For help picking a license, see https://" -"choosealicense.com/. Once you have chosen a license, open :file:`LICENSE` " -"and enter the license text. For example, if you had chosen the MIT license:" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" msgstr "" #: ../source/tutorials/packaging-projects.rst:282 @@ -27062,6 +26968,17 @@ msgid "" "the file is empty)." msgstr "" +#, fuzzy +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-json-web-signature-json-" +#~ "serialization-01" +#~ msgstr "http://self-issued.info/docs/draft-jones-jose-json-private-key.html" + +#, fuzzy +#~ msgid "" +#~ "https://datatracker.ietf.org/doc/html/draft-jones-jose-json-private-key-01" +#~ msgstr "http://self-issued.info/docs/draft-jones-jose-json-private-key.html" + #, fuzzy #~| msgid "Project name" #~ msgid "**Inspiration**: :ref:` pyproject-tool-table`"